假设我有index.cshtml
@{
ViewBag.Title = "Index";
}
@model SomeModel
@section JS{
content1
content2
content3
}
<div> View Content </div>
我有没有办法让控制器操作只为JS部门提供index.js
的请求?
导航到http://somesite/index.js
会返回
content1
content2
content3
编辑:对此有一些进一步的想法。我的目标是创建一个以编程方式需要JS部分的布局页面,然后将View组合到该布局页面,然后返回此结果。
Psuedo代码示例:
var layout = new LayoutPage();
layout.DefineSection("JS", required: true);
layout.Compose(View("index"))
return layout;
我没有按照我的描述实现这一点,但我觉得这可能会提供更多关于我想要达到的目标。
答案 0 :(得分:1)
你可以做这样的事情(但是你必须编写自己的控制器动作来正确地做到这一点)
@model MvcApplication1.Models.TestModel
@{
ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
@section JS {
blahblahblah
}
@RenderSection("JS")
public ActionResult Index() {
return View("Index", "_JSLayout", yourModel);
}
这将仅输出JS
部分。如果你想以编程方式进行,那么需要一点时间。
答案 1 :(得分:0)
唯一的方法是将该部分的内容变为局部视图,并从控制器动作返回部分视图。