操作結果における部分図としてエディタテンプレートを返します
-
24-09-2019 - |
質問
私はこれと同様のモデルを持っています:
public class myModel
{
public ClassA ObjectA {get; set;}
public ClassB ObjectB {get; set;}
}
私のメインビューでは、私はこれに似たタグを持つます:
<div id="section1">
<%=Html.EditorFor(m => m.ObjectA)%>
</div>
<div id="section2">
<%=Html.EditorFor(m => m.ObjectB)%>
</div>
にClassAとClassBのは、エディタのテンプレートが定義されている両方ます。
私は、セクション1のdivをリロードするAjax呼び出しを行い、いくつかのJavaScriptを作成しました。私はアクションメソッドがEditorTemplatesフォルダにあるObjectAに、ClassA.ascx用のエディタを返すようにしたい。
私はアクションメソッドに次きます:
public ActionResult GetData(int input)
{
// Process input here and create modelData
return PartialView("ClassA", modelData);
}
それはにClassAビューを見つけることができないので、これはエラーになります。
私のソリューションは、「GetDataメソッド」と呼ばれるフォルダビューでPartialViewを作成することであったと私のリターンは、GetDataのビューをレンダリングします。
:GetDataのビューは、コードの一行だけを持っています<%=Html.RenderForModel()%>
これは作業を行いますが、リターン、エディタテンプレートへのアクションメソッドへの道があった場合、私は不思議でしたか?
解決
return PartialView("~/EditorTemplates/ClassA.ascx", modelData);
他のヒント
ギフト包装のためのボーナスポイントます:
public class CustomControllerBase : Controller
{
public PartialViewResult EditorFor<TModel>(TModel model)
{
return PartialView("EditorTemplates/" + typeof(TModel).Name, model);
}
public PartialViewResult DisplayFor<TModel>(TModel model)
{
return PartialView("DisplayTemplates/" + typeof(TModel).Name, model);
}
}
その後、CustomControllerBaseからコントローラ(と呼ばれる、と言う、MyController)継承を持って、そして:
public ActionResult MyAction(int id)
{
return EditorFor(new MyViewModel(id));
}
コードは "〜/ビュー/ MyController / EditorTemplates / MyViewModel.ascx" を探しているされます。
これは私のために働いていた(のMVC 4 の)
public ActionResult GetData(int input)
{
// Process input here and create modelData
return PartialView("EditorTemplates/ClassA", modelData);
}
所属していません StackOverflow