我遇到的问题是将我的观点中的参数传递给我的控制器
我在视图中有这个代码片段:
<a class="btn-simple" onclick="submitDetails('Dashboard', 'Cancel', '<%=Model.Data.Id %>', $('form'));">save</a>
这是来自我的控制器:
[HttpPost]
public ActionResult Cancel(string id, FormCollection collection)
{
var appt = Application.Session.GetObjectFromOid<Appointment>(new ObjectId(id));
}
我收到一条错误,说“id”为空,但是当我在视图中测试Model.Data.Id时,它不是null。
这是我的submitDetails函数:
function submitDetails(controller, method, id, form) {
form.ajaxSubmit({ target: '#itemdetails' });
}
我想要完成的是从视图中的按钮返回我的控制器,最初称为视图的方法的“[HttpPost]”版本
答案 0 :(得分:1)
确保您提交的表单包含带有id的隐藏字段,或者将其作为查询字符串参数传递:
<% using (Html.BeginForm("Dashboard", "Cancel", new { id = Model.Data.Id })) { %>
...
<% } %>
或者如果您想传递动态网址,则可以执行以下操作:
<a class="btn-simple" onclick="submitDetails('<%= Url.Action("Dashboard", "Cancel", new { id = Model.Data.Id }) %>', $('form'));">save</a>
然后:
function submitDetails(url, form) {
form.ajaxSubmit({ url: url, target: '#itemdetails' });
}
更新:
如果你想避免使用submitDetails
javascript方法并让你的锚点成为表单的提交按钮:
<% using (Html.BeginForm("Dashboard", "Cancel", new { id = Model.Data.Id })) { %>
...
<button class="btn-simple" type="submit">save</button>
<% } %>