0

「イベント」という名前のプロパティのドロップダウンを持つフォームを作成しています。残念ながら、これは予約語であるため、通常どおりには機能しません。

@Html.DropDownListFor(x => x.Event, new SelectList(ViewData["Events"] as IEnumerable<JFS.Data.Model.Event>, "Id", "Name"))

コントローラーでは、予約語であるため、この値を個別に取得することはできません。したがって、次のようにします。

public ActionResult Create(int event)
{
etc etc
}

エラーがスローされます。

私が理想的にやりたいことは、ドロップダウン リストの名前を次のように変更することです。

@Html.DropDownListFor(x => x.Event as eventId, new SelectList(ViewData["Events"] as IEnumerable<JFS.Data.Model.Event>, "Id", "Name"))

しかし、それはうまくいきません。名前を変更する正しい方法を知っている人はいますか?:-)

4

1 に答える 1

2

HTML ヘルパーによって生成された名前を変更することはできません。これは仕様によるものです。代わりにできることは、アクション パラメーターの名前を変更し、プレフィックスを付けて@、C# で予約語を変数名として使用できるようにすることです。

public ActionResult Create(int @event)
{
    etc etc
}

しかし、どうしても必要な場合を除き、予約語を変数名として使用することは一般に推奨されません。そして、あなたの場合、もちろんビューモデルを使用することで構成されるはるかに優れたソリューションがあるため、絶対に必要というわけではありません:

public class CreateEventViewModel
{
    public int Event { get; set; }
}

次に、コントローラー アクションにこのビュー モデルを引数として使用させます。

public ActionResult Create(CreateEventViewModel model)
{
    etc etc
}
于 2013-02-20T09:54:58.023 に答える