我想使用Ajax来防止刷新我的网页,并为了这个,我想返回 查看由PartialView从法控制器上的ajax调用.
问题是:
Viewas 是好方法PartialView吗?PartialView方法中的视图路径Controller?例如,对于在_index视图查看/ BasicInfo/_index路径,我尝试
PartialView("~/Views/BasicInfo/_Index");,
PartialView("~/Views/BasicInfo/_Index.chtml");,PartialView("BasicInfo/_Index");
,并得到误差找不到视图
编辑
如何将视图名称指定为PartialView方法,如果视图位于共享文件夹之外的文件夹中并且超出相关视图文件夹.例如,我的控制器名称是controller1,我的View在此路径中是Views/BasicInfo/_Index?
你应该有这个
myController的
查看
哪里:
Index.cshtml作为完整视图将呈现带有传递模型的局部视图(为什么这样?以防止代码重复)
@model YourModelType
@{
ViewBag.Title = "View Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@Html.Partial("IndexPartial", Model)
Run Code Online (Sandbox Code Playgroud)
IndexPartial.cshtml是局部视图,类似于
@model YourModelType
<h2>Some Title</h2>
<div>
<h4>YourModel</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Property1)
</dt>
<dd>
@Html.DisplayFor(model => model.Property1)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Property2)
</dt>
<dd>
@Html.DisplayFor(model => model.Property2)
</dd>
</dl>
Run Code Online (Sandbox Code Playgroud)
现在,当你想要完整的View使用MyController/Index时,如果你想要部分视图,你可以使用MyController/IndexPartial获取它
或者您可以在操作上使用参数来指定输出:
public ActionResult GetMyView(bool? partial)
{
var model = something;
if (partial != null && partial)
{
return PartialView("MyViewPartial", model)
}
return View("MyView", model);
}
Run Code Online (Sandbox Code Playgroud)
调用partial = yourHost/controller/GetMyView?partial = true
现在回到您的问题,是的,您可以将部分视图作为视图返回,反之亦然.但是你会在通过ajax(不完整或重载的html)将html附加到页面时遇到问题.
小智 5
您可以使用 :
public PartialViewResult ActionMethodName()
{
return PartialView("_Index.chtml");
}
Run Code Online (Sandbox Code Playgroud)
要么
public ActionResult ActionMethodName()
{
return PartialView("_Index.chtml");
}
Run Code Online (Sandbox Code Playgroud)
没有限制,也不被认为是不好的做法。
您的问题部分有错字PartialView("~/Views/BasicInfo/_Index.chtml")。
你应该写return PartialView("~/Views/BasicInfo/_Index.cshtml")
| 归档时间: |
|
| 查看次数: |
7139 次 |
| 最近记录: |