我在PHP页面中有以下脚本标记:
<script src='/get_items.php'></script>
理想的.Net MVC3视图中的对应物(假设我想称之为动作方法)?
PS:php脚本标签返回函数调用(通过Fiddler观察),即:
RegisterThis('123',[“Title”,{“1111”:[“Title Text”,“”,“&lt; / h2&gt;”,“1”,“5”,“0”,[] ]}]);
RegisterThis('234',[“Title”,{“2222”:[“Title Text”,“”,“&lt; / h2&gt;”,“1”,“0”,“6”,[] ]}]);
RegisterThis('345',[“Title”,{“3333”:[“Title Text”,“”,“&lt; / h2&gt;”,“1”,“8”,“0”,[] ]}]);
(我不是要求创建一个JSon脚本,只是如何在视图中使用与php页面中的脚本标记相对应。)
答案 0 :(得分:0)
要将C#/ VB代码添加到页面,您可以使用&lt; %%&gt;你的.aspx中的标签。如果是返回值的单个函数调用,则可以使用&lt;%:%&gt;甚至HTML会对结果进行编码。查看此页面以获取更多信息:http://www.asp.net/mvc/tutorials/older-versions/views/asp-net-mvc-views-overview-cs。
要专门加载操作,请使用HTML Helper方法@ Html.Action。有关详细信息,请查看此页面:http://buildstarted.com/2010/09/29/htmlhelper-guide-for-mvc-3-part-2/。
答案 1 :(得分:0)
您可以使用Url.Action
帮助程序。例如,在Razor视图中:
<script type="text/javascript" src="@Url.Action("GetItems", "Home")"></script>
然后你当然会对GetItems
上的HomeController
动作进行调用,它必须返回有效的javascript:
public ActionResult GetItems()
{
return JavaScript("the script you want to return");
}
并且由于您显示的脚本示例类似于JSONP(它不完全是JSONP,因为您将2个参数传递给回调并且您多次调用回调),您可以编写自定义JsonpResult
:< / p>
public class JsonpResult : JsonResult
{
public JsonpResult(object data)
{
Data = data;
JsonRequestBehavior = JsonRequestBehavior.AllowGet;
}
public override void ExecuteResult(ControllerContext context)
{
var response = context.HttpContext.Response;
response.Write("RegisterThis(");
base.ExecuteResult(context);
response.Write(")");
}
}
然后让你的控制器操作返回这个自定义JsonpResult
类的一个实例,并将一个视图模型传递给JSON并作为参数传递给回调javascript函数。