0

A.これまでのところ成功しています。

  1. 私は3つのdivを持っています"NewActionNewController NewArea

  2. 現在、次のようなURLの$.Ajax投稿があります'@ 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リンクに渡そうとしましたが、実行エラーが発生します。

上記の#2のAjax投稿のUrl.Actionメソッドに部分呼び出し(#3)のパラメーター値を渡す方法を知っている人はいますか?

前もって感謝します。

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 に答える