簡體   English   中英

MVC模型屬性返回默認值

[英]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.

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