私のアプリで奇妙なことが起こっています。破損することはありませんが、奇妙な動作です。何が起こっているのかを理解するために連絡を取りました。
モデルに基づいた部分的なビューに取り組んでいましたが、うまくいきました。多くのものを正しい入力に置き換える必要があることがわかりました。
だからここに私の古いモデルのスニペットがあります:
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 アイテムを「安全に」処理できますが、結局のところこれは安全ではありません...