2

我是 ASP.net MVC 4(来自 webforms)的新手,所以我对如何执行某种类型的功能有点困惑。

我通过使用创建了一个下拉框

<select>
@for(var item in ViewBag.Items)
{
    <option value="@item.ID">@item.name</option>
}
</select>

假设我创建了一个“添加”按钮。

<input type="submit" value="Add" />

我有一个表,我们称该表为“汽车”,其中有一列名为“CarID”。

我想要发生的是点击添加按钮,一个新行被添加到汽车表中,用户在下拉框中选择了汽车 ID。

我怎样才能做到这一点?

4

2 回答 2

3

您需要form在控件周围设置一个以及在select.

<form action="/Cars/Add" method="post">
   <select name="carId">
     @for(var item in ViewBag.Items)
     {
       <option value="@item.ID">@item.name</option>
     }
   </select>

   <input type="submit" value="Add" />
</form>

现在,创建一个名为的新控制器Cars并添加一个动作Add

public class CarsController : Controller
{
    public ActionResult Add(int carId)
    {
        // TODO : Validate the carId
        // TODO : Do the DB stuff to insert the car as you would in winforms
        return View("AddComplete"); // or whatever view
    }
}

上面的示例生成一个表单,该表单将提交一个调用carId操作的变量Add。然后操作处理程序将验证并将其添加到数据库中。

您必须记住,HTML 没有状态,即每次加载页面时,必须传入或加载所有相关内容。

这些是 c# MVC 开发的一些基本概念,因此可能值得花时间阅读基础知识:-

http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

http://www.asp.net/mvc/tutorials

于 2013-09-11T15:52:05.353 回答
0

在 MVC 中,一个更好的决定是将所有逻辑从 View 移动到控制器:

如果您有汽车模型:

public class car
{
    public string carname {get;set;}
    public int carID {get; set;}
}

比您可以SelectList在控制器操作方法中创建的:

public ActionResult CreateNewRow()
{
    //**create selectList in controller
    var carlist = new List<SelectListItem>();
    var cars = from n in db.Cars
              select new SelectListItem
        {
             Text = n.carname,
             Value = n.CarID.ToString()
        };
    foreach (var item in cars)
    carlist.Add(item);

    ViewBag.cars = cars

    return View();
}

在您看来,您只需要以下内容:

@using(Html.BeginForm())
{
    @Html.DropDownListFor(model => model.carID, (SelectList)ViewBag.cars)

    <input type="submit" value="ok" />
}
于 2013-09-11T16:07:44.430 回答