2017-05-18 5 views
0

私はこの質問に対する答えをどこからでも探しましたが、おそらく私は不運です。これは簡単なことですが、予想よりも長くかかる場合に備えて、ここから始めたいと思います。コントローラに文字列モデルを渡す(MVCフォーム)

だから私は今までに一番単純な見解を持っています。

@model System.String 

@using (Html.BeginForm("AdminDeletePost", "Home", FormMethod.Post)) 
{ 
    @Html.HiddenFor(m => m) 

    <h3>Are you sure you want to delete the following user?</h3>  
    <br />  
    <h4>@Model</h4>  
    <br />  
    <h6>To confirm deletion, click <i>Save</i>.</h6> 
    <h6>To cancel, click <i>Cancel</i>.</h6> 
} 

私がやりたいすべては、ホームコントローラでAdminDeletePostアクションに戻って(文字列です)モデルの値を渡しています。だから私の典型的な形のようにレイアウトされています。しかし、それは簡単ですが、私はそれを働かせることはできません。私は、上記の<h4>@Model</h4>が正しい値を表示していることを加えてください。モデルの値がnullではありません。 HiddenHelperメソッドがある種のメタデータをInputHelperメソッドに渡していると仮定しています。その1つのアイテムはNameパラメータです。しかし、文字列はノーマルモデルのように注釈を付けることができません。おそらく私は間違った方法でこれを見ているでしょう。

私は、誰かが私が単純であるため(つまり、フォーム全体を投稿するのではなく個々の文字列)、ルートを外してみることをすでに推測しています。しかし、アプリケーションのレイアウトと、すべてのフォーム間の一貫性の維持のために、これは今のところ理想的な設定です。ここで

enter image description here

は誰が前に任意の比較的同様の問題があった...スタックのですか?

答えて

2

これらのヘルパーは、モデルのプロパティのみを取得できます。モデル全体ではありません。

そうしないと、入力に必要な名前がわからなくなります。

1つの文字列プロパティを持つビューモデルオブジェクトに切り替え(推奨)するか、適切な名前と値で自分自身を<input type="hidden">と記述する必要があります。

どちらの場合でも、リクエストバインディングを行うには、名前がアクションのパラメータ名と一致する必要があります。

+0

ありがとう、あなたはとてもうまく説明しました。 – hack3rfx

+0

@スラックスは本当によく説明されています。 –

関連する問題