[英]MVC model properties returning default value
发生了一些奇怪的事情,我无法理解为什么..这是场景-
当我填充模型时,我有一个属性很少的模型,模型中的属性确实设置了值(通过放置断点检查)。 它也出现在视图上,但没有显示在文本框中。 它显示默认值(通过查看页面上的项目文本框为0进行猜测)。
下面是我的模型-
public class PriceEnquiryModel
{
[DisplayName("Item")]
public int item { get; set; }
[DisplayName("Description")]
public string description { get; set; }
[DisplayName("UOP")]
public string uop { get; set; }
[DisplayName("UOS")]
public string uos { get; set; }
[DisplayName("Pack Description")]
public string pack_description { get; set; }
[DisplayName("Pack Size")]
public string PackSize { get; set; }
}
这是控制器的代码-
public ActionResult Search(PriceEnquiryModel price)
{
var priceEnquiryModel = new PriceEnquiryModel();
// Read parameter values from form.
int item = Convert.ToInt32(Request.Form["txtSearch"].ToString());
int maxrow = Convert.ToInt32(Request.Form["txtmaxrow"].ToString());
string priceType = !string.IsNullOrWhiteSpace(price.priceType) && price.priceType.ToUpper().Equals("STA") ? "N" : "Y";
// Get the price information
var operationResult = priceBal.SearchPriceEnquiry(0, item, price.price_scheme, priceType, maxrow);
var priceEnquiryDomList = (List<PriceEnquiryDom>)operationResult[0].Result;
// Check if we have something
if (priceEnquiryDomList != null && priceEnquiryDomList.Count > 0)
{
// Parse the model.
priceEnquiryModel = helper.ConvertDomToModel(priceEnquiryDomList[0]);
// Prepare the list.
priceEnquiryModel.PriceEnquiryModelList = new List<PriceEnquiryModel>();
foreach (var priceEnquiryDom in priceEnquiryDomList)
{
var priceEnquiryModelListItem = helper.ConvertDomToModel(priceEnquiryDom);
priceEnquiryModel.PriceEnquiryModelList.Add(priceEnquiryModelListItem);
}
Session["mainModel"] = priceEnquiryModel;
}
// Prepare product drop down list items if searched by product desc
if (TempData.Count > 0 && TempData["Products"] != null)
{
var products = TempData["Products"] as List<ProductSearchByDescModel>;
ViewBag.Products = products;
}
return View("Index", priceEnquiryModel);
}
这是View上的模型(调试时)-
这就是我在视图上渲染模型的方式-
这是运行后的页面-
有谁知道发生了什么事? 我已经在多个页面上执行了相同的操作,并且都按预期运行。
提前致谢。 罗希特
问题是您的方法具有参数PriceEnquiryModel price
但是随后您返回了PriceEnquiryModel
的新实例(名为priceEnquiryModel
)。 模型绑定的过程包括绑定模型并将其值添加到ModelState
(以及任何验证错误)。
当您返回视图时,html帮助器方法使用来自ModelState
的值(而不是模型值),因此尝试更改值(我假设是priceEnquiryModel = helper.ConvertDomToModel(priceEnquiryDomList[0]);
正在执行)被忽略)由助手。
有关为什么这是默认行为的解释,请参阅此答案的第二部分
在为PriceEnquiryModel
的属性设置新值之前,调用ModelState.Clear()
的PriceEnquiryModel
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.