我想使用ajax来防止刷新我的页面,为此我想要返回 ajax调用中控制器的 PartialView 方法观看次数。
问题是:
View
作为PartialView
?PartialView
Controller
方法中设置观看路径? 例如,对于 Views / BasicInfo / _Index 路径中的_Index视图,我试试
PartialView("~/Views/BasicInfo/_Index");
,
PartialView("~/Views/BasicInfo/_Index.chtml");
,PartialView("BasicInfo/_Index");
,并获得错误,因为找不到视图
修改
如果视图位于Shared文件夹之外的文件夹中且超出相关视图文件夹,则如何将指定的视图名称添加到PartialView方法中。例如,我的控制器名称是 controller1 ,我的视图位于此路径 Views / BasicInfo / _Index ?
答案 0 :(得分:5)
你应该有这个
myController的
浏览
其中:
作为完整视图的Index.cshtml将呈现带有传递模型的局部视图(为什么这样?以防止代码重复)
@model YourModelType
@{
ViewBag.Title = "View Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@Html.Partial("IndexPartial", Model)
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>
现在,当您想要完整的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);
}
调用partial = yourHost / controller / GetMyView?partial = true
现在回到你的问题,是的,你可以将部分视图作为视图返回,反之亦然。但是你会在通过ajax(不完整或重载的html)将html附加到页面时遇到问题。
答案 1 :(得分:5)
你可以使用:
public PartialViewResult ActionMethodName()
{
return PartialView("_Index.chtml");
}
OR
public ActionResult ActionMethodName()
{
return PartialView("_Index.chtml");
}
答案 2 :(得分:3)
您在问题的var xml_doc = jQuery.parseXML(xmlString);
部分输入了错字。
您应该写PartialView("~/Views/BasicInfo/_Index.chtml")
答案 3 :(得分:1)
是的。 。它是在没有页面加载的情况下作为部分视图返回的最佳实践。
return PartialView("YourPartialView", model)
或者你可以使用绝对路径
return PartialView("~/Views/AnotherFolder/YourPartialView", model)
答案 4 :(得分:0)
这是我的问题所理解的: 你有一个控制器名称Controller1,它有ActionResult someMethod()和另一个控制器BasicInfo,它有一个PartialView BasicInfo_Index,你想从someMethod()返回BasicInfo_Index局部视图:
您可以在someMethod()中使用以下代码来获取BasicInfo控制器的部分视图:
var DesirePartialView = ViewEngines.Engines.FindPartialView(ControllerContext, "BasicInfo_Index");
return PartialView(DesirePartialView.View);
或者您可以使用RedirectToAction()在BasicInfo控制器中重新设置动作方法,该控制器返回指定的部分视图
答案 5 :(得分:0)
您从ajax在控制器中调用的方法的返回类型是什么?它应该是这样的:
public PartialViewResult LoadPartialView()
{
return PartialView("~/Views/BasicInfo/_Index.chtml");
}