2012-03-07 33 views
1
我有從我的視圖傳遞參數到我的控制器發出

對象引用,參數爲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]」版本,最初叫視圖

+0

請發佈'submitDetails()'代碼。 – 2012-03-07 15:22:22

+0

'submitDetails'做了什麼? – 2012-03-07 15:22:44

+0

好吧,我剛剛添加它 – 2012-03-07 15:24:30

回答

1

確保您所提交的表單包含一個隱藏字段的ID或它是作爲查詢字符串參數傳遞:

<% using (Html.BeginForm("Dashboard", "Cancel", new { id = Model.Data.Id })) { %> 
    ... 
<% } %> 

或如果你想通過一個動態的URL,你可以做到以下幾點:

<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' }); 
} 

UPDATE:

如果你想避免submitDetails JavaScript方法並讓您的主播爲表單的提交按鈕:

<% using (Html.BeginForm("Dashboard", "Cancel", new { id = Model.Data.Id })) { %> 
    ... 

    <button class="btn-simple" type="submit">save</button> 
<% } %> 
+0

如果可能的話,我想盡量避免使用submitDetails – 2012-03-07 15:42:46

+0

@ user1229309,在這種情況下,您可以將此錨點作爲表單的提交按鈕。我用一個例子更新了我的答案。 – 2012-03-07 15:46:30

+0

然後您可以添加一個隱藏字段作爲DD與model.data.id的值建議並抓住表單集合。 」/> – Brian 2012-03-07 15:48:04

相關問題