3

私は C# を初めて使用し、最初の MVC プロジェクトを作成しています。さまざまなタイプの 3 つのパラメーターをコントローラー アクションに渡す方法を理解するのに苦労しています。これが私のコントローラーメソッドです:

public ActionResult Create(Notification notification, string hash, list<int> users){
    //code inside method irrelevant...
}

と私の通知モデル:

public class Notification
{
    public int ID { get; set; }
    public string ApplicationID { get; set; }
    public string Description { get; set; }
    public System.DateTime DateStamp { get; set; }
}

List<> パラメーターを追加する前に、投稿されたデータ (またはクエリ文字列) を次のようにすることで正常に機能しました。

ApplicationID=1&Description=yo&hash=abcdefg 

そして、2 つのパラメーター ('ApplicationID' と 'Description') が通知オブジェクトに属していることを魔法のように認識していました。しかし今、int の list<> を追加したいと思います。

これはできることですか?渡されたデータ/クエリ文字列をどのようにフォーマットしますか?

4

1 に答える 1

3

これはできることですか

はい。

渡されたデータ/クエリ文字列をどのようにフォーマットしますか?

このような:

ApplicationID=1&Description=yo&hash=abcdefg&users=1&users=2&users=3

またはあなたがこのように好むなら:

ApplicationID=1&Description=yo&hash=abcdefg&users[0]=1&users[1]=2&users[2]=3

また、次のブログ投稿が役立つかもしれません。

しかし、コントローラーのアクションシグネチャをスパゲッティ化されたコードに変換する前に、コードのリーダーは、このアクションが実行する数百万のパラメーターを確認するために、いくつかの画面を水平方向に循環させる必要があります。狂気を止めて、ビューモデルを導入します。

public class CreateViewModel
{
    public Notification Notification { get; set; }
    public string Hash { get; set; }
    public List<int> Users { get; set; }
}

その後:

public ActionResult Create(CreateViewModel model)
{
    //code inside method irrelevant...
}

その後:

notification.applicationID=1&notification.description=yo&hash=abcdefg&users[0]=1&users[1]=2&users[2]=3
于 2012-08-24T21:40:09.403 に答える