亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取傳遞給部分視圖的嵌套復雜對象的值。

獲取傳遞給部分視圖的嵌套復雜對象的值。

海綿寶寶撒 2019-07-08 12:30:07
獲取傳遞給部分視圖的嵌套復雜對象的值。我有一個ViewModel,它的成員之一是一個復雜的對象。復雜對象有4個屬性(所有字符串)。我正在嘗試創建一個可重用的部分視圖,在其中我可以傳遞復雜的對象,并讓它為其屬性生成帶有html幫助器的html。一切都很好。但是,當我提交表單時,模型綁定器沒有將值映射回ViewModel的成員,因此在服務器端沒有得到任何信息。如何將用戶鍵入的值讀入復雜對象的html幫助程序中。視圖模型public class MyViewModel{      public string SomeProperty { get; set; }      public MyComplexModel ComplexModel { get; set; }}MyComplexModelpublic class MyComplexModel{      public int id { get; set; }      public string Name { get; set; }      public string Address { get; set; }      ....}控制器public class MyController : Controller{      public ActionResult Index()      {           MyViewModel model = new MyViewModel();           model.ComplexModel = new MyComplexModel();           model.ComplexModel.id = 15;           return View(model);      }      [HttpPost]      public ActionResult Index(MyViewModel model)      {           // model here never has my nested model populated in the partial view           return View(model);      }}視點@using(Html.BeginForm("Index", "MyController", FormMethod.Post)){      ....      @Html.Partial("MyPartialView", Model.ComplexModel)}局部視圖@model [email protected](m => m.Name)...如何在表單提交時綁定這些數據,以便父模型包含從部分視圖輸入到web表單中的數據?謝謝編輯:我發現我需要添加“ComplexModel”。到部分視圖(TextBox)中的所有控件名稱,以便它映射到嵌套對象,但我不能將ViewModel類型傳遞給部分視圖以獲得額外的層,因為它需要是通用的,才能接受幾種ViewModel類型。我可以用javascript重寫name屬性,但在我看來,這似乎過于簡單了。我還能怎么做呢?編輯2:我可以用新的{name=“ComplexModel.Name”}靜態地設置name屬性,所以我認為我在做生意,除非有人有更好的方法?
查看完整描述

3 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

我遇到了同樣的情況,在這些信息豐富的文章的幫助下,我的部分代碼更改為在由分部視圖生成的輸入元素中具有前綴。

我使用了Html.PartialHelper,為Html.分部構造函數提供了ModelType的部分視圖名稱和對象,以及一個帶有HTML字段前綴的ViewDataDictionary對象的實例。

這將導致GET對“主視圖”的“xyz url”的請求,并在其中使用前綴生成的輸入元素呈現部分視圖,例如,前面的name=“title”現在相應的HTML元素中變為name=“MySubTypet.itle”,對于表單輸入元素的其余部分也是相同的。

當向“xyz url”發出POST請求時出現了問題,希望將填寫的表單保存到我的數據庫中。但是MVC模型綁定器并沒有將我發布的模型數據綁定到表單值中,而且ModelState也丟失了。視圖數據中的模型也將變為空。

最后,我嘗試使用TryUppdateModel方法更新發布形式的模型數據,該方法采用模型實例和先前傳遞給部分視圖的html前綴,現在可以看到模型與值綁定,模型狀態也存在。

請讓我知道這個方法是好的還是有點多樣化的!


查看完整回答
反對 回復 2019-07-08
  • 3 回答
  • 0 關注
  • 436 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號