0

我知道这个问题并不难,但我是 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);
    }

这是我休假的模型

在此处输入图像描述

4

2 回答 2

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
于 2013-07-10T11:22:02.190 回答
1

假设您对 Status 使用 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 oject。

在提供的示例中,这应该直接映射到传递给 Post 方法的 Leave 对象,假设它是一个 bool 值。调试,您应该会看到值返回 true 或 false,具体取决于您选择的选项。

如果 Status 是具有两个以上(即 bool)选项的 Enum,它也可能有效,但我之前没有尝试过。

因此,在您的编辑视图中,将您的单选按钮和表单的其他部分包装在:

@using (Html.BeginForm("Edit", "ControllerName")) {
   ..your stuff

   <input type="submit" value="Save" />
}
于 2013-07-10T11:23:24.483 回答