我有一组用于提交表单的锚标签
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();
});
我正在尝试为此开发服务器端解决方案。我认为一种方法是让form
环绕每个锚标记,并在每个表单中使用两个隐藏字段而不是data- attributes
。
答案 0 :(得分: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)
{
...
}