0

在我的网页中,我需要根据调用的参数值填充按钮ButtonType
假设如果ButtonType == "Edit"那么我需要隐藏每个按钮,但是butUpdate.

我想知道如何通过 MVC Action 方法显示/隐藏 html 按钮。

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult SupplierDetail(int SupplierID, string ButtonType)
    {   
        var Supplier = supplierListRepository.Supplier_SelectByID(SupplierID);
        return View(Supplier);
    }

我正在使用 Asp.net Mvc Razor 表单。

@using (Html.BeginForm("SupplierDetail_SubmitClick", "Supplier", FormMethod.Post, new { id = "frmSupplierDetail" }))
{   
@Html.ValidationSummary(true)
<table cellpadding="0" cellspacing="0" border="0" style="width:450px; height:auto">
.....
<tr>
    <td>@Html.LabelFor(model => model.Phone)</td>
    <td>@Html.EditorFor(model => model.Phone)
        @Html.ValidationMessageFor(model => model.Phone)</td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td>
        <input type="submit" id="butSave" name="butSave" value="Save" style="width:100px; height:auto" />
        <input type="submit" id="butUpdate" name="butUpdate" value="Update" style="width:100px; height:auto" />
        <input type="submit" id="butDelete" name="butDelete" value="Delete" style="width:100px; height:auto" />
        <input type="submit" id="butReset" name="butReset" value="Reset" style="width:100px; height:auto" />
    </td>
</tr>
</table>
</div>

<div id="content">
@Html.ActionLink("Back to List", "Index")
</div>

}

每个建议将不胜感激。

4

2 回答 2

2

显示/隐藏按钮不是控制器操作的责任。控制器动作不/不应该知道按钮的含义。这是存在于视图中的概念。另一方面,控制器操作应该与模型通信并准备一个视图模型,然后将其传递给视图以进行显示。因此,您可以定义一个视图模型,该模型将包含定义按钮可见性的属性,并根据 ButtonType 参数的值相应地设置这些属性。然后控制器动作将把这个视图模型传递给视图,而不是supplier你当前传递的对象。显然,视图模型也将具有持有该供应商的属性。现在剩下的所有视图都是基于视图模型属性的值来决定如何显示按钮。

于 2012-05-23T06:51:20.117 回答
1

在您的控制器中将按钮类型添加到 viewdata:

ViewData["ButtonType"] = ButtonType

然后,在视图本身中,您可以添加 if/else 语句或任何其他适合您所有情况的逻辑,以决定要呈现的内容:

@if (ViewData["ButtonType"].ToString() == "Edit")
{
    <input type="submit" id="butUpdate" name="butUpdate" value="Update"    
     style="width:100px; height:auto" />      
}

当然,这只是一个演示,Yuo 应该使代码适应您的业务逻辑

于 2012-05-23T06:52:01.727 回答