[英]MVC partial View and controller code
我不明白控制器如何处理局部视图,它与视图相同吗? 我举了一个例子,似乎从未使用过部分视图控制器
这是例子
主视图(test.cshtml):
<h2>Main View</h2>
@Html.Partial("_Partial", new { myNumber = 11 })
局部视图(_Partial.cshtml):
<h3>partial view</h3>
<p>my number is @Html.ViewBag.myNumber</p>
控制器(EtlMessagesController)
public ActionResult Test() {
return View();
}
public ActionResult _Partial(int myNumber) {
ViewBag.myNumber = myNumber;
return PartialView();
}
当我调用主视图时,我期望
主视图
部分视图
我的号码是11
但是没有写数字11。 我想念什么吗?
在这里,您将匿名模型传递给局部视图:
<h2>Main View</h2>
@Html.Partial("_Partial", new { myNumber = 11 })
尝试使用显式模型类或仅使用int
:
<h2>Main View</h2>
@Html.Partial("_Partial", 11)
然后,您可以在部分视图中使用@model
关键字:
@model int
<h3>partial view</h3>
<p>my number is @Model</p>
至于:
public ActionResult _Partial(int myNumber) {
ViewBag.myNumber = myNumber;
return View();
}
您应该使用:
public ActionResult _Partial(int myNumber) {
return PartialView("_Partial", 11);
}
PartialView
方法可以在AJAX场景中使用,以呈现HTML页面的一部分。
我发现了3种感谢评论和回答的方式:
@Html.Partial()
不调用控制器方法-它仅呈现在名为“ _Partial”的视图中定义的html。 您需要@Html.Action("_Partial", new { myNumber = 11 })
来调用服务器方法并呈现其生成的html。
ViewDataDictionary
(感谢Mark Schevchenko的答案, 这个答案在另一个问题) @Html.Partial("_Partial", new { myNumber = 11 })
将第二个参数作为模型传递,而应将参数传递给控制器ViewDataDictionary
@Html.Partial("_Partial", new ViewDataDictionary { { "myNumber", 11 } }
integer
作为局部视图模型(感谢Mark Schevchenko的回答) 参见马克·舍甫琴科的答案。 这种方式的缺点是,您无法在局部视图上使用其他模型
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.