MVC 3 Razorを使用して、練習用の簡単なCMSを作成しています。アイデアは、いくつかの部分ビューを作成することです。
データベースルックアップを実行したいのですが、ページに3つの部分ビューをレンダリングする必要があることがわかります。
どうすればいいですか? WebFormsでは、LoadControl(ControlURL)を呼び出しますが、同等のものはここにありません。
それはクライアント側のものでしょうか?
編集-ビューの名前を事前に知るのではなく、モデルからビュー名を取得して、そのビューをレンダリングすることを考えていました。したがって、ページにはFooという名前のビューまたはBarという名前のビューがある場合があります。モデルは、実行時に、レンダリングするビューをコントローラーアクションに通知します。
「コントロール」をレンダリングするために使用できる2つの方法があります。
@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName"); }
他のアクションをレンダリングすることもできます。
@Html.Action("ActionName", "Controller", new { Values = "yourvalues" })
@{ Html.RenderAction("ActionName", "Controller", new { Values = "yourvalues" }); }
それぞれの2番目が@{ }
で囲まれていることに注意してください。これは、文字列を返さず、直接ストリームにレンダリングするためです。
また、部分ビューの代わりに@Html.Action()
を検討してください
Html.RenderPartial("partialview name", Model.class, new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "classname" } });
This code can be used to render the partial view in apge.
HTMLfiledprefix is defined to keep the data available in the model
You can use tis code to load a partial view on a button event using ajax
function partialview() {
var url = '@Url.Action("action", "controller")';
var data = $('#frm').serialize();
(to serialize the data in the model before posting to the action)
var finaldata = data;
$.ajax({
type: "post",
url: url,
data: finaldata,
async: false,
contentType: "application/json; charset=utf-8",
error: function (xhr) {
errorRedirecttoErrorController(xhr.error);
},
success: function (data) {
$("#DIVID").html(data);
(div to which the partial view to be loaded)
}
});
}
別の方法
@RenderPage("~/Views/Shared/LeftMenu.cshtml")