1

データを含むオブジェクト ビューとそのビューのボタンがあります。ユーザーはオブジェクト情報を確認し、ボタンをクリックして新しいビュー フォームに移動し、情報を入力してアイテムを作成できます。私の課題はこれです。前のビューにオブジェクトの ID を関連付けて、作成および送信する情報に関連付けるにはどうすればよいですか?

4

2 に答える 2

1
@Html.ActionLink("Add","AddNotes","Object",new {@id=5},null)

これにより、 querystring を持つタグが作成されます?id=5。(ハードコーディングされた 5 をビューの動的な値に置き換えることができます)

ViewModel/Modelこの値を作成フォーム用に保持するプロパティがあります。

public class CreateNoteViewModel
{
  public int ParentId { set;get;}
  public string Note { set;get;}
  //Other properties also
}

2 番目のビューを作成する GETactionメソッドでこれを読み取り、ViewModel/Model のそのプロパティの値を設定します。

public ActionResult AddNotes(int id)
{
  var model=new CreateNoteViewModel();
  model.ParentId=id;
  return View(model);
}

そして、強く型付けされたビューで、この値を隠し変数内に保持します。

@model CreateNoteViewModel
@using(Html.BeginForm())
{
 @Html.TextBoxFor(Model.Note)
 @Html.HiddenFor(Model.ParentId)
 <input type="submit" />
}

HttpPostアクションで、POSTED モデルの ParentId プロパティからオブジェクト ID を取得できます。

[HttpPost]
public ActionResult AddNotes(CreateNoteViewModel model)
{
 if(ModelState.IsValid()
 {
   //check for model.ParentId here
   // Save and redirect
 }
 return View(model); 
}
于 2012-07-02T18:32:13.857 に答える
0

非表示の入力とビューデータ、PSEUDOCODE を使用できます。 注:ビュー データで文字列を使用し、コントローラーで ID に戻す必要がある場合があります。ViewData/ViewBag (および短所) の基本的な説明については、このリンクを参照してください。

最初のアクション (コントローラー) からデータをビューに渡す必要があります。コントローラーの基本クラスには、ビューに渡すデータを入力するために使用できる "ViewData" ディクショナリ プロパティがあります。キーと値のパターンを使用して、ViewData ディクショナリにオブジェクトを追加します。

コントローラ

 public ActionResult yourfirstaction()
      {
            //assign and pass the key/value to the view using viewdata
            ViewData["somethingid"] = ActualPropertyId;

ビュー内 - 次のビューをレンダリングするために次のコントローラに戻すために非表示の入力で使用する値を取得します

 <input type="hidden" name="somethingid" value='@ViewData["somethingid"]' id="somethingid" />

コントローラ

  public ActionResult yournextaction(string somethingid)
      {
            //use the id
            int ActualPropertyId =  Convert.ToInt32(somethingid);
于 2012-07-02T04:51:53.593 に答える