这是我的控制器
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult ShowPartial()
{
return PartialView("_View1");
}
}
这是我的索引视图
<script type="text/javascript">
function myFunction() {
$("#div1").load('@Url.Action("ShowPartial", "Home")');
}
</script>
<div id="div1">
</div>
@section footerButton {
<input type="button" id="button1" value="button" onclick="myFunction()" />
}
这是我的布局页面
<body>
<div style="height: 10%; background-color: whitesmoke; text-align: center">
Header
</div>
<div style="height: 80%; background-color: white; text-align: center">
@RenderBody()
</div>
<div style="height: 10%; background-color: whitesmoke; text-align: center">
@RenderSection("footerButton", false)
</div>
</body>
我创建了一个部分视图页面,其中我写了一个单词“Hello”。 我完成了按钮点击的部分视图渲染。 我已经使用了一个名为ShowPartial的actionResult,你可以在上面看到它。 现在我的问题是我想要相同的输出而不创建Actionresult。 请帮忙。
答案 0 :(得分:1)
如果返回String而不是ActionResult,则可以使用以下命令生成字符串。您可以选择将此方法放在基本控制器上,以便最大限度地重复使用。
public string RenderPartialViewToString(string viewName, object model)
{
this.ViewData.Model = model;
try
{
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, viewName);
ViewContext viewContext = new ViewContext(this.ControllerContext, viewResult.View, this.ViewData, this.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
catch (System.Exception ex)
{
return ex.ToString();
}
}
然后,你可以从你的方法中调用它:
public String ShowPartial()
{
return RenderPartialViewToString("_View1", null);
}
答案 1 :(得分:1)
你可以试试这个:
@{ Html.RenderPartial("_PartialViewName"); }
您也可以在视图中使用模型,并直接从调用部分模型的视图中传递它。
答案 2 :(得分:0)
您是否尝试过Html文件的绝对路径?
<script type="text/javascript">
function myFunction() {
$("#div1").load('~/Shared/Something/page.html');
}
</script>
page.html必须只包含html和javascript代码...