1

カテゴリ モデル (以下に示す例) を渡すことができますか

public class Category { 
     public Guid Id { get; set; }; 
     public String Title { get; set; }
}

選択/オプションを使用していますか?

<select id="categories" name="Category">
    <option value="Id">Text</option>
</select>

私が理解している限り、これは通常どおりバインドされますが、Titleプロパティは除外されますか?

編集

Viewmodel

public class EditProductModelView { 
    [Required] Category Category { get; set; }
    // other properties
}

Controller

public ActionResult Edit(EditProductViewModel model) {
    // controller logic
}

ありがとう!

4

3 に答える 3

1

それをバインドするには、 select-element という名前を付ける必要があると思いますId

<select id="categories" name="Id">
    <option value="foo">Text</option>
    <option value="bar">Text</option>
</select>

アクションが次のようになっている場合:

public ActionResult YourAction(Category model) {
    var modelId = model.Id; // Will be set to the chosen value
    var title = model.Title; // Will be null
}
于 2012-11-09T14:42:56.927 に答える
1

モデルには、選択した Id を取得する場所が必要です。これは、必要な属性を配置する場所です

public class EditProductModelView { 
      [Required]
     public Guid SelectedCategoryId {get;set;}
}

そして、名前はビューモデルのプロパティ名と一致する必要があります:

<select id="categories" name="SelectedCategoryId">
    <option value="SomeGuidHere">Text</option>
</select>

これは、ブラウザが投稿を処理する方法が原因です。Text ノードは投稿せず、選択した値 (この場合は Id) のみを投稿します。

于 2012-11-12T07:26:57.537 に答える
1

タイトル値の非表示の入力を追加し、選択オプションが変更されるたびに data-title 属性値のオプションで埋めることができます

<input id="categoriesTitle" type="hidden" name="Category.Title" />
<select id="categories" name="Category.Id">
    <option value="foo" data-title="this is foo">foo</option>
    <option value="bar" data-title="I am bar">bar</option>
</select>
于 2012-11-09T14:58:18.137 に答える