2012-06-25 81 views
0

我用Razor和C#使用MVC。我想更新一個元素...與ajax計數器。這裏是我的代碼:如何將我的頁面中的值傳遞給控制器​​?

@model Domain.CounterObject 
@using (Ajax.BeginForm("Count", "CounterObject", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "my-control" })) 
{ 
    <div id="my-control" class="bid-object"> 
     <div> 
      <span class="title">@Html.Encode(Model.Title)</span> 
     </div> 
     <div> 
      <span class="display">@Html.Encode(Model.GetFinalDate())</span> 
     </div> 
     <div> 
      <span class="display">@Html.Encode(Model.GetValue())</span> 
     </div> 
     <div> 
      <input type="submit" value="Count" /> 
     </div> 
    </div> 
} 

在我的控制器我有這樣的代碼:

[HttpPost] 
     public PartialViewResult Count(CounterObject counter) 
     { 
      // Special work here 
      return PartialView(counter); 
     } 

的問題是,我收到我的計算方法我CounterObject櫃檯總是空。我如何將我的頁面的值傳遞給控制器​​?

回答

0

我收到我的計數方法總是空

你不是從形式提交任何那麼如何綁定發生的第一? 如果用戶不被允許編輯值,但仍然希望通過表單提交,那麼您必須使用hidden fields以及它們。

例如,

<div> 
    <span class="title">@Html.Encode(Model.Title)</span> 
    @Html.HiddenFor(m => m.Title) 
</div> 

請注意,隱藏字段應該與屬性具有相同的名稱以使綁定成功發生。

最好在模型中存儲GetFinalDate()GetValue()結果的屬性,以便您可以輕鬆地綁定諸如Title之類的內容。

0

您必須定義一個名稱和ID的輸入字段,然後ModelBinder才能綁定到您的CounterObject。

您可以使用@ Html.EditorForModel一次,然後檢查生成的Html以查看它生成的名稱/ ID對的類型。有了這些,你可以繼續並手工製作你的Html,如果你想的話。

0

使用

<span class="title">@Html.Encode(Model.Title)</span> 
<div class="editor-field">@Html.EditorFor(Model => Model.Title)<div> 
//For other fields 

這樣可以綁定到你的對象。