@Html.EditorFor
の中からコントローラアクションにポストされたプロパティ名を変更することはできますか?ASP.NET MVC5コントローラのアクションメソッドパラメータnull
私は、オブジェクトのリストとユーザーがフォームを作成できるようにするフォームの両方を表示するビューを持っています。可能であれば、ビューモデル全体ではなく、作成時に新しいオブジェクト値をポストバックしたいだけです。私はすべての既存のオブジェクトを表示するためにExistingObjects
をループ、と私は@Html.BeginForm("Index", "GenericController", FormMethod.Post)
でフォームを作成し、私が持っている内部てるの下にいビューで
public class GenericIndexViewModel
{
public IEnumerable<GenericListViewModel> ExistingObjects { get; set; }
public GenericCreateViewModel NewObject { get; set;
}
public class GenericCreateViewModel
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
}
:ビューのための
私のViewModel構造は次のようになります適切な@Html.EditorFor(m => m.NewObject.PropertyA)
。以下のビュースニペット:次のように
@model Namespace.Models.Generic.GenericIndexViewModel
...
@if (Model.ExistingObjects.Any())
{
// Display list of objects
}
...
@using (Html.BeginForm("Index", "GenericController", FormMethod.Post))
{
@Html.ValidationSummary(true)
<div class="field-holder">
@Html.LabelFor(m => m.NewObject.PropertyA)
@Html.EditorFor(m => m.NewObject.PropertyA)
</div>
<div class="field-holder">
@Html.LabelFor(m => m.NewObject.PropertyA)
@Html.EditorFor(m => m.NewObject.PropertyA)
</div>
<div>
<input type="submit" value="Save" name="command" />
</div>
}
アクションメソッドのシグネチャは次のとおりです。
[HttpPost]
public ActionResult Index(GenericCreateViewModel model) { ... }
私はmodel
パラメータがnull
ですが、それは成功したアクションメソッドを打つフォームを送信します。
私は性質がNewObject
が付いされていることがわかりますポストデータ検査:
NewObject.PropertyA=test1&NewObject.PropertyB=test2
どのように接頭辞を防ぐ、あるいは引数として接頭辞の特性を認識するためのアクションメソッドを取得しないのいずれかを?
ビュー内の@modelは何ですか? –
必要な関連コードを表示してください –
リクエストされたビュースニペットが追加されました。 –