簡體   English   中英

MVC HttpPost強類型模型null

[英]MVC HttpPost strongly typed Model null

View Model看起來像這樣:

public class AsmenysInfoViewModel2
{
    public asmenys_info Asmenys_info { get; set; }
    public List<miestai> Miestai { get; set; }
    public string Test { get; set; }
}

有兩個動作。 獲取和發布。

    public ActionResult Index(long? id)
    {

        var model = new AsmenysInfoViewModel2();
        model.Test = "Test";
        model.Asmenys_info = BllFactory.DalFactory.AsmenysInfoDal.GetById(id.Value);
        return View(model);
    }
    [HttpPost]
    public ActionResult Index(AsmenysInfoViewModel2 asmenys_info)
    {
        var model = asmenys_info;
        return View(model);
    }

我的觀點看起來像這樣:

@model MODELS.AsmenysInfoViewModel2
@{
    ViewBag.Title = "Index";
}
@using (Html.BeginForm("Index", "AsmenysInfo", FormMethod.Post))
{
    @Html.ValidationSummary()
    @Html.TextBoxFor(m => m.Asmenys_info.adresas)       

    <input type="submit" value="Išsaugoti" />
}

如果我使用EditorFor或TextBoxFor無關緊要 - 結果相同。 發布時我的模型屬性“Asmenys_info”始終為null。 如果我的類AsmenysInfoViewModel2不包含asmenys_info類型屬性並且只包含“string,int etc”(沒有強類型) - 它會起作用。 我的問題是:

如何發布具有強類型屬性的View Model,在發布時不會為null?

您的模型具有名為Asmenys_info的屬性,POST方法中的參數也名為asmenys_info 在內部, DefaultModelBinder讀取包含Asmenys_info值的表單數據的值,並嘗試將屬性Asmenys_info設置為該值但由於沒有從string到復雜對象的轉換而失敗。

例如,將參數的名稱更改為模型中屬性名稱以外的任何名稱,它將綁定正常

[HttpPost]
public ActionResult Index(AsmenysInfoViewModel2 model)

使用其他對象名稱更改以下行

 public ActionResult Index(AsmenysInfoViewModel2 asmenys_info)

在上面的方法中使用對象的任何其他名稱而不是asmenys_info

因為雖然mvc框架使用對象映射模型,但AsmenysInfoViewModel2類的asmenys_info和Asmenys_info屬性存在混淆。

暫無
暫無

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

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