2

フォームの送信に使用されるアンカータグの配列があります

foreach (var item in items)
<a  class="submitform" data-did='<%:Model.DID%>'  data-daid='<%:Model.daID%>' href="#"><%:Model.DisplayText%>
</a>

アンカーをクリックすると、フォームを動的にアタッチし、非表示のフィールドに、このようなフォーム送信時に必要なデータ属性値を入力します

 $(".submitforapproval").click(function (e) {
        e.preventDefault();
        var daid = $(this).data("daid");
        var did = $(this).data("did");

        $("<form/>", { action: "/HOME/PostMethod", method: "POST", id: "temp_form" }).appendTo("body");
        $("<input/>", { class: 'jshiddenInput', type: "hidden", name: "docid", value: did }).appendTo("#temp_form");
        $("<input/>", { class: 'jshiddenInput', type: "hidden", name: "DocAID", value: daid }).appendTo("#temp_form");

        $("#temp_form").submit();


    });

このためのサーバー側のソリューションを開発しようとしています。私が考える1つの方法はform、各アンカータグをラップし、各フォームで の代わりに2つの隠しフィールドを使用することですdata- attributes

4

1 に答える 1

0

なぜこのすべての JavaScript が必要なのですか? 送信ボタンを備えた標準の HTML フォームを使用しないのはなぜですか? 意味的にはより正しいようです:

<% foreach (var item in items) { %>
    <% using (Html.BeginForm("PostMethod", "Home", FormMethod.Post)) { %>
        <%= Html.TextBox("docid", Model.DID) %>
        <%= Html.TextBox("docAID", Model.daID) %>

        <button type="submit">
            <%: Model.DisplayText %>
        </button>
    <% } %>
<% } %>

サーバー側の方法に関する限り、ビューモデルを使用できます。

public class DocumentViewModel
{
    public string DocId { get; set; }
    public string DocAId { get; set; }
}

次に、POST コントローラー アクションは、このビュー モデルをパラメーターとして単純に受け取ります。

[HttpPost]
public ActionResult PostMethod(DocumentViewModel model)
{
    ...
}
于 2012-09-12T08:19:22.590 に答える