MVC - 在查看模式下打开页面

时间:2011-05-05 01:35:00

标签: asp.net-mvc-views

您好 我试图看看是否有人对如何在MVC中实现View模式概念有一个睿智的想法。因此,如果用户打开页面,页面应该以视图模式打开(禁用所有控件),如果他们没有编辑权限,则其他应该正常打开。请注意,“查看”页面也包含部分页面

1 个答案:

答案 0 :(得分:0)

我认为您可以在MVC框架下完全控制您的页面。如果您使用标准MVC方法生成输入控件,则可以采用以下方法。

@Html.TextBox("MyTextBoxID", Model==null?"":Model.MyFieldValue, new {disabled = "disabled})

如果您没有使用标准MVC方法来生成输入控件。您可以创建自己的方法来生成输入控件。例如,在MyExt.cs

public static class MyExt
{
    public static MvcHtmlString MyTextBox(this HtmlHelper html, string id, object value)
    {
            // check user privilege
            if (CurrentUser.CanEditThisPage /*Implement your own logic here */)
                 return html.TextBox(id, value);
            else
                 return html.TextBox(id, value, new {disabled = "disabled"});
    }
}

并在您的页面

@using MyNamespace
...
@Html.MyTextBox("MyTextBoxID", Mode==null?"":Model.MyFieldValue)

另一种方式

将指标从服务器端传递到客户端,并使用javascript或JQuery禁用所有控件。

@Html.Hidden("CanEdit", CurrentUser.CanEditThisPage)

在javascript中

void pageLoad() {
    if ($("#CanEdit").val() == "true"))
        $("input").attr("disabled", "disabled");
}

类似的东西(不确定语法的正确性:P)