簡體   English   中英

在ASP.Net中提交表單時,十進制值的文本框為null?

[英]Textbox for Decimal value null when submitting form in ASP.Net?

提交表單時的文本框值在控制器中為空。 我所擁有的簡化結構如下:

模型

public class MyObject
{
    public decimal? DecimalProperty { get; set; }
}

視圖

@model List<MyObject>

@for(var i = 0; i < Model.Count; i++) 
{
   using (Html.BeginForm("UpdateObject", "MyController", FormMethod.Post))
   {
      @Html.Textbox(String.Format("Model[{0}].DecimalProperty", i), Model[i].DecimalProperty)
      <input type="submit" value="Update"/>
   }
}

CONTROLLER

public ActionResult UpdateObject(MyObject myObject)
{
   // Do Stuff...
}

如果我在控制器方法中放置一個斷點,然后檢查myObject的屬性值,則DecimalProperty為null。 我正在使用的實際對象還有其他屬性,但是由於某種原因,這個屬性不是。 我沒有發現任何暗示小數必須以不同於DateTime或字符串的方式處理的內容。 我也試過用手寫出輸入的html:

 <input type="text" name="@(String.Format("Model[{0}].DecimalProperty", i))" value="@Model[i].DecimalProperty" />

我已經設置了文本框的名稱id屬性,只是為了安全起見。 提交表單時,為什么我的文本框值為null的任何想法?

設置[HttpPost]屬性沒有幫助。

問題出在你的行動簽名中。 您應該將其更改為接受整個模型列表,或將Html.TextBox的Name屬性更改為等於MyObject的屬性名,導致默認MVC綁定器無法正確映射它。

所以,第一個選項:

public ActionResult UpdateObject(List<MyObject> myObject)
{
   // Do Stuff...
}

第二種選擇:

@Html.Textbox("DecimalProperty", Model[i].DecimalProperty)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM