我知道这个问题并不难,但我是asp.net mvc3的新手,我不知道怎么做。
我在我的网站上创建了一个简单的CRUD功能控制器。现在,在我的编辑中,我将文本框更改为两个单选按钮“批准”和“拒绝”。现在我的问题是如何让我的编辑获得我选择的单选按钮的值?以下是我的视图>编辑中的单选按钮的值
我的视图>编辑
<div class="editor-label">
@Html.LabelFor(model => model.Status)
</div>
<div class="editor-field">
<input type="radio" name="action" value="Approve" />Approve
<input type="radio" name="action" value="Reject"/>Reject
</div>
这是我的控制器中的编辑我不知道在这里修改什么.. :(
public ActionResult Edit(int id)
{
Leave leave = db.Leaves.Single(l => l.leave_id == id);
return View(leave);
}
[HttpPost]
public ActionResult Edit(Leave leave)
{
if (ModelState.IsValid)
{
db.Leaves.Attach(leave);
db.ObjectStateManager.ChangeObjectState(leave, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(leave);
}
这是我的假期模型
答案 0 :(得分:1)
尝试使用Html.RadioButtonFor()帮助器:
@Html.RadioButtonFor(model => model.Status, "Approve") Approve
@Html.RadioButtonFor(model => model.Status, "Reject") Reject
而不是
<input type="radio" name="action" value="Approve" />Approve
<input type="radio" name="action" value="Reject"/>Reject
取决于您的状态类型。 如果它比博德尔的DevDave的例子应该工作正常。 如果它是字符串 - 比我的第一个例子应该没问题。 但是如果它是int,其中0表示Reject,1表示Approve - 你应该使用类似这样的东西:
@Html.RadioButtonFor(model => model.Status, "1") Approve
@Html.RadioButtonFor(model => model.Status, "0") Reject
答案 1 :(得分:1)
假设您对状态使用bool值:
<label for="approve">
@Html.RadioButtonFor(x => x.Status, "True", new { id = "approve" })
Approve
</label>
<label for="reject">
@Html.RadioButtonFor(x => x.Status, "False", new { id = "reject" })
Reject
</label>
编辑:公开db对象是不好的做法,您应该使用具有db对象相关属性的视图模型,然后在保存/加载时可以在两者之间进行映射。
即。返回LeavesViewModel进行查看,但在保存时将LeavesViewModel转换为db对象。
在提供的示例中,这应该直接映射到传递给Post方法的Leave对象,假设它是bool值。调试,您应该看到值返回true或false,具体取决于您选择的选项。
如果Status是一个包含两个以上(即bool)选项的Enum,它也可以工作,但我之前没有尝试过。
因此,在编辑视图中,将单选按钮和表单的其他部分包装在:
中@using (Html.BeginForm("Edit", "ControllerName")) {
..your stuff
<input type="submit" value="Save" />
}