私は MVC プロジェクトを作成し、モデルをフィルターからビューに設定したいと考えています。
しかし、私は知りません。どうすればこれを行うことができますか。
モデル:
public class TestModel
{
public int ID { get; set; }
public string Name { get; set; }
}
コントローラ:
[CustomFilter(View = "../Test/Test")]//<===/Test/Test.cshtml
public ActionResult Test(TestModel testModel)//<===Model from Page
{
//the Model has Value!!
// if has some exception here
return View(model);//<=====/Test/Test.cshtml
}
フィルター (デモのみ):
public override void OnActionExecuting(ActionExecutingContext filterContext){
ViewResult vr = new System.Web.Mvc.ViewResult()
{
ViewName = this.View,//<======/Test/Test.cshtml
ViewData = filterContext.Controller.ViewData
};
//How can I set Model here?!!
vr.Model = ???? //<========the Model is only get
filterContext.Result = vr;
}
編集開始@Richard Szalay @Zabavsky @James @spaceman に感謝
フィルターを変更すると、HandleErrorAttribute に拡張されます
ViewResult vr = new System.Web.Mvc.ViewResult()
{
ViewName = this.View,//<======/Test/Test.cshtml
ViewData = new ViewDataDictionary(filterContext.Controller.ViewData)
{
//I want get testModel from Action's paramater
//the filter extends HandleErrorAttribute
Model = new { ID = 3, Name = "test" }// set the model
}
};
編集終了
テスト/Test.chtml
@model TestModel
<h2>Test</h2>
@Model //<=====model is null
私がリクエストするとき
http://localhost/Test/Test?ID=3&Name=4
テスト ページはモデルを取得できません。