我非常新手网站应用程序的开发,想从最新的技术开始学起,所以我同时想学习 asp.net 和 MVC 框架。这对于专业的 MVC 开发者来说可能是一个非常简单的问题。
我的问题是:部分视图是否应该有关联的操作,如果是,当正常页面使用
我的问题是:部分视图是否应该有关联的操作,如果是,当正常页面使用
RenderPartial()
在部分视图上时,这个操作会被调用吗?RenderPartial()
在部分视图上时,这个操作会被调用吗?虽然你可以有一个返回部分视图的操作,但你不需要一个操作来呈现部分视图。 RenderPartial接受部分视图并将其呈现,如果提供了给定的模型和视图数据,则使用它们呈现到当前(父)视图中。
如果你正在使用AJAX加载/重新加载页面的某个部分,则可能希望有一个返回部分视图的操作。在这种情况下,不需要返回完整视图,因为你只想重新加载页面的某个部分。在这种情况下,你可以使操作仅返回对应于该部分的部分视图。
标准机制
在普通视图中使用部分视图(不需要操作)
...some html...
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
...more html..
Ajax机制
通过Ajax重新加载页面的部分内容(注意:在初始页面加载时,部分内容被渲染为内联元素)。
...some html...
<div id="partial">
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
</div>
...more html...
<script type="text/javascript">
$(function() {
$('#someButton').click( function() {
$.ajax({
url: '/controller/action',
data: ...some data for action...,
dataType: 'html',
success: function(data) {
$('#partial').html(data);
},
...
});
});
});
</script>
AJAX的控制器
public ActionResult Action(...)
{
var model = ...
...
if (Request.IsAjaxRequest())
{
return PartialView( "Partial", model.PartialModel );
}
else
{
return View( model );
}
}
我能够用这个逻辑实现类似的功能。
在 .cshtml 文件中:
@Html.Action("ActionMethodName", "ControllerName");
在控制器内部
[Route("some-action")]
public ActionResult ActionMethodName()
{
var someModel = new SomeModel();
...
return PartialView("SomeView.cshtml", someModel);
}
就是这样。
如果你需要将数值从.cshtml传递到操作方法,那也是可以的。
接受的答案完全正确,但我想补充一下,您可以使用jQuery load加载部分视图。如果您不考虑并发,则需要更少的配置。
$("#Your-Container").load("/controller/action/id");
@Html.Action("StockWarningsPartial", "Stores")
action方法的样式可以是:
public ActionResult StockWarningsPartial()
{
....
return View("StockWarningsPartial", warnings);
}
视图 'StockWarningsPartial.cshtml' 的开头如下:
@{
Layout = null;
}
使其不再重新渲染周围的布局。
public ActionResult GetStateList(int country_id)
{
List<stateDTO> stateList = new List<stateDTO>();
stateList = bll.GetState(country_id);
ViewBag.sList = new SelectList(stateList, "state_id", "State_Name");
return PartialView("DisplayStates");
}