我正在尝试向控制器添加自定义参数列表(guid)。 出于测试目的,我得到了一个简单的课程:
public class MyVM
{
public string Name { get; set; }
public Guid Id { get; set; }
public List<MySubVM> MySubVms { get; set; }
}
public class MySubVM
{
public string Name { get; set; }
}
我在这样的页面上显示它
@using (Html.BeginForm("DoPost", "Home", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" }))
{
@Html.TextAreaFor(m => m.Name)
for (int i = 0; i < Model.MySubVms.Count; i++)
{
@Html.TextBoxFor(m => Model.MySubVms[i].Name)
}
<button class="btn form-control btn-success" type="submit" name="buttonType" value="SaveEvaluation">Save</button>
}
我的控制器方法如下所示
[HttpPost]
public ActionResult DoPost(MyVM vm, List<string> guids)
{
return View();
}
Jquery
<script type="text/javascript">
var guids = [{ id: "6650f183-14fa-4247-9639-612c4ca0a232" }, { id: "97aa91a3-28a4-44f3-8d96-f93d5eaef558" }];
$.ready(function() {
$('form').on('submit', function(event) {
event.preventDefault();
});
$.ready(function() {
$('form').on('submit', function(event) {
event.preventDefault();
$.post({
type: 'POST',
url: "/Home/DoPost",
dataType: "json",
data: { vm: $("form").serialize(), guids: guids },
success: function() {
alert("Successful");
}
});
});
});
});
问题是模型被正确发布到控制器中,但是guid列表不起作用。它一直都是空的。我尝试使用字符串,这也是同样的问题。
答案 0 :(得分:0)
查看此链接
jQuery.POST - pass another parameter with Form.Serialize() - Asp.net MVC 3
然后你应该能够做到
public ActionResult DoPost(MyVM vm, FormCollection form) {
var guids = form["guids"];
}