0

A. 到目前为止我成功的地方:

  1. 我有 3 个 div”NewAction NewController NewArea

  2. 我有一个 $.Ajax 帖子,其 url 当前如下 '@Url.Action("CurrentAction", "CurrentController", new { area = "CurrentArea" })'

  3. 我有几个页面需要这个特定的 Ajax 帖子,所以我将 Ajax 帖子放在一个部分中,并且每个使用它的主页在部分调用中都有一个参数,例如:

    @Html.Partial("_PartialPage", new [] { "NewAction", "NewController", "NewArea" })

  4. 上面 #1 中的 div 已成功使用 #3 中的字符串值动态填充

B. 我的困难在哪里:

尽管进行了许多努力和尝试,但我无法将 #2 中的 @Url.Action 值更改为 #1 中 div 中的值。

我什至尝试声明 C# 私有变量并使用填充上述 div 的 foreach 填充它们,并将这些值传递给 @Url.Action 链接,但出现运行错误。

有谁知道我可以将部分调用(#3)中的参数值传递给上面#2中的Ajax帖子中的Url.Action方法的方法。

提前致谢。

4

1 回答 1

2

您可以有一个方法来提取传递给这个强类型部分的值并构建 url:

@model string[]

@functions {
    public string GetUrl() {
        if (Model != null && Model.Length > 2)
        {
            var values = new RouteValueDictionary();
            values["controller"] = Model[0];
            values["action"] = Model[1];
            values["area"] = Model[2];
            return Url.RouteUrl(values);
        }
        return Url.Action("CurrentAction", "CurrentController", new { area = "CurrentArea" });
    }
}

<script type="text/javascript">
    var url = @Html.Raw(Json.Encode(GetUrl()));    
    $.ajax({
        url: url,
        type: 'POST',
        success: function(result) {
            // ...
        }
    });
</script>

将呈现如下:

<script type="text/javascript">
    var url = "/NewArea/NewAction/NewController";
    $.ajax({
        url: url,
        type: 'POST',
        success: function(result) {
            // ...
        }
    });
</script>

但是,如果您不需要单独使用这些路由值,另一种可能性是将整个 url 直接传递给局部视图:

@Html.Partial("_About", Url.Action("NewAction", "NewController", new { area = "NewArea" }))

然后在部分内部简单地使用它:

@model string
<script type="text/javascript">
    var url = @Html.Raw(Json.Encode(Model));    
    $.ajax({
        url: url,
        type: 'POST',
        success: function(result) {
            // ...
        }
    });
</script>
于 2012-05-09T06:14:50.337 回答