【发布时间】:2013-05-08 04:04:22
【问题描述】:
我的应用中发生了一些奇怪的事情。这不是可损坏的,但这是一种奇怪的行为,我正在与您联系以了解正在发生的事情。
我正在处理基于模型的一些局部视图,并且它有效。我发现我必须用正确的输入替换很多东西。
所以这是我的旧模型的 sn-p:
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; }
}
这是与我为构建此局部视图而创建的新类相同的 sn-p:
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 项目,尽管我觉得这毕竟不安全......
【问题讨论】:
标签: c# asp.net-mvc partial-views