在我的應用程序中有一些奇怪的事情發生。這不是可怕的,但它是一種奇怪的行爲,我正在向你瞭解正在發生的事情。在局部視圖中用作模型的對象在控制器中創建另一個對象?
我正在研究基於模型的一些局部視圖,它工作。我發現我必須用正確的輸入來替換很多東西。
因此,這裏是我的舊模式的一個片段:
public class SearchObjInfo
{
public string m_ObjName { get; set; }
public string m_ObjType { get; set; }
public decimal? m_ObjNumber { get; set; }
public string m_ObjSymbol { get; set; }
public string m_ObjPower { get; set; }
}
而這裏的相同片段與新類我做了建造這個局部視圖:
public class SearchObjInfoPartial
{
public string m_ObjName { get; set; }
public IEnumerable<SelectListItem> m_ObjType { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:0}")]
public int m_ObjNumber { get; set; }
public IEnumerable<SelectListItem> m_ObjPower { get; set; }
public IEnumerable<SelectListItem> m_ObjSymbol { get; set; }
}
現在呈現的方式是所做的實際上是完全相同的,而不是。我用很多像這些東西之前:
<label>
Text: Write a name, part of a name, or a word.
</label>
Object Name: @Html.TextBox("_objectName") <br/>
Object Number: <input type="number" min="0" max="9999" name="_objNumber" value="decimal" style="width: 70px"/><br/>
Type: @Html.DropDownList("_objType", "All") <br/>
Power: @Html.DropDownList("_objSymbol", "=") @Html.DropDownList("_objValue", String.Empty)<br/>
但現在我使我的部分觀點是這樣的:
@model MyApp.Utilities.SearchObjInfoPartial
Object Name: @Html.TextBoxFor(item => item.m_ObjName, Model.m_ObjName, String.Empty) <br/>
Object Number: @Html.EditorFor(item => item.m_ObjNumber)<br />
Power: @Html.DropDownListFor(item => item.m_ObjPower, Model.m_ObjPower, String.Empty) @Html.DropDownListFor(item => item.m_ObjSymbol, Model.m_ObjSymbol, String.Empty)
Type: @Html.DropDownListFor(item => item.m_ObjType, Model.m_ObjType, String.Empty) <br/>
渲染我對付SelectLists,這裏沒有任何問題了。
現在,這裏的地方變得有趣:
在我的控制器,我曾經有接收大量的數據的方法(在這裏看到:How to deal with many possible values to make a query?)
但現在我做別的事情。想也沒想,我試圖添加舊的搜索模式的控制器方法是這樣的:
public ActionResult BrowseObjectList(SearchObjInfo searchObj, string _objName, (...))
我只是發現了,它的作品即使接收對象不一樣,在我的部分所使用的查看模型。這怎麼可能?我的意思是,適當的領域將填補,我可以「安全地」處理我的searchObj項目,但我不覺得這安全畢竟...
非常感謝!我不知道這一點,而且「印象深刻」。 :) – hsim 2013-05-07 20:05:53
ASP.NET Webforms也有類似的作用,只是框架會做一個映射到頁面中的控件,換句話說就是網頁類的屬性。希望你嘗試改變你的模型來審覈我的答案;-) – eka 2013-05-07 20:32:20