繁体   English   中英

未将对象引用设置为对象的实例,参数为null

[英]Object reference not set to an instance of an object, parameter is null

我在将参数从视图传递给控制器​​时遇到问题

我认为这段代码片段:

<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时,它不为空。

这是我的submitDetails函数:

function submitDetails(controller, method, id, form) {
    form.ajaxSubmit({ target: '#itemdetails' });

}

我要完成的工作是从视图中的按钮返回到控制器,该按钮最初是调用该视图的方法的“ [HttpPost]”版本

确保您提交的表单包含带有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>
<% } %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM