2

選択したオプションのパラメーターをコントローラーに送信する方法を教えてください。これが私の見解です:

<select>
   @foreach(var item in Model.City)
   {      
      <option>@Html.DisplayFor(x => item.Name)</option>

   }
</select>
4

2 に答える 2

11

したがって、あなたの見解では、次のようになります。

@model MyModel

@using(Html.BeginForm()) {

  <select id="City" name="City">
    @foreach(var c in Model.City)
    {
      <option value="@c.Id">@c.Name</option>
    }
  </select>

  <input type="submit" value="Post data to controller" />

}

コントローラーでは、同じ名前で署名が異なるアクションを作成するだけです。

また:

[HttpPost]
public ActionResult Edit(string City) { ... }

または、モデル全体を渡すことができます

[HttpPost]
public ActionResult Edit(MyModel model) { 
  string city = model.City;
}

しかし、そのような質問がある場合は、ASP.NET の公式 Web サイトにある PluralSight の無料の ASP.NET コースに時間を費やすことをお勧めします。

無料で利用できるコース:

コースは各ページの右側のサイドバーにあります

そしてスコット・ハンセルマンから:

于 2012-09-13T12:01:34.690 に答える
0

フォーム html ヘルパーが欠落しているようです。これを試してください (別の ActionResult を指定する必要がある場合は、BeginForm ヘルパーで読み取られる Controller/Index アクションに行くことを前提としています):

@using (Html.BeginForm())
    <select>
    @foreach(var item in Model.City)
    {

        <option>@Html.DisplayFor(x => item.Name)</option>    
    }
    </select>

    <br />

    <input type="submit" value="Search" />
}

Model.City を繰り返すのではなく、Html.DropDownList のような別の Html ヘルパーを調べる必要があります。

于 2012-09-13T12:06:00.307 に答える