0

MVC 4 アプリケーションの同じページで、同じ厳密に型指定されたモデルを持つ複数の部分ビューを使用しています。コントローラーで単一のアクションを呼び出してモデルを返し、ajax 呼び出しを使用して一度にすべての部分ビューに使用したいと考えています。

4

1 に答える 1

1

あなたが示したことは大したことではありませんが、最善を尽くして、あなたにとって最も意味のある例を挙げましょう。次のモデルがあるとします。

public class UserProfile
{
    public int UserId { get; set; }
    public string UserName { get; set; }
    /// <summary>
    /// 
    /// </summary>
    /// <remarks>
    /// 1 = Premium Users
    /// 2 = Basic Users
    /// NOTE: I'm using int instead of an enum to make the sample more simple.
    /// </remarks>
    public int UserType { get; set; }
}

そして、次のようなコントローラーメソッド:

    [HttpPost]
    public ActionResult SomeAction(int id)
    {            
        IEnumerable<UserProfile> profiles = some_method_that_does_something_and_builds_the_model();
        return Json(profiles);
    }

次のように ajax 呼び出しを行うことができます。

    $.post('@Url.Action("MyAction", "MyController")', { id: $('#myId').val() }, 
function (result) {
                // you can use $.each here but for loop is more efficient                                   
                var list1 = '';
                var list2 = '';
                for (var i = 0; i < result.length; i++) {
                    // just add the name as p's for a simple example
                    // I build the result as string as it is more efficient than building p elements
                    if (result[i].UserType == 1) {
                        list1 += '<p>' + result[i].UserName + '</p>';
                    }
                    else {
                        list2 += '<p>' + result[i].UserName + '</p>';
                    }
                }
                $("#first").append(list1);
                $("#second").append(list2);
            });
于 2013-03-20T09:38:51.560 に答える