[英]Why is ASP.NET submitting the original value of a TextBox control when the contents have been changed?
[英]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.