0

我有来自 PHP 页面的以下脚本标记:

 <script src='/get_items.php'></script>

.Net MVC3 视图中理想的对应物是什么(比如我想调用一个动作方法)?

PS:php script 标签返回函数调用(通过 Fiddler 观察到),即:

RegisterThis('123', ["Title",{"1111":["Title Text","","</h2>","1","5","0",[]]}]) ;

RegisterThis('234', ["Title",{"2222":["Title Text","","</h2>","1","0","6",[]]}]) ;

RegisterThis('345', ["Title",{"3333":["Title Text","","</h2>","1","8","0",[]]}]) ;

(我不是在问创建一个 JSon 脚本,只是在 php 页面中如何让视图中的 script 标签对应。)

4

2 回答 2

0

你可以使用Url.Action助手。例如在 Razor 视图中:

<script type="text/javascript" src="@Url.Action("GetItems", "Home")"></script>

然后当然你会调用它的GetItems动作,它必须返回有效的javascript:HomeController

public ActionResult GetItems()
{
    return JavaScript("the script you want to return");
}

并且由于您显示的脚本示例类似于 JSONP(它不完全是 JSONP,因为您将 2 个参数传递给回调并且您正在多次调用回调),您可以编写一个自定义JsonpResult

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 函数。

于 2012-07-08T06:15:57.890 回答
0

要仅将 C#/VB 代码添加到页面,您可以在 .aspx 中使用 <% %> 标记。如果它是一个返回值的单个函数调用,您可以使用 <%: %> ,它甚至可以对结果进行 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/ 。

于 2012-07-08T03:44:54.983 回答