asp.net-mvc如何访问在 ASP.NET MVC 中的 Html 元素的属性

发布时间: 2017/3/25 2:59:27
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

与 ASP.NET web 窗体、 我可以拖放在窗体上的控件,将无法访问其属性︰

if (number == 0)
   AddButton.Enabled = false;

虽然我不能拖,放上一个 ASP.NET MVC 视图模板的控件,可以更改它的属性?

例如︰

  • 禁用按钮在某些条件下,能够使它如果条件发生变化。
  • 能够改变从"下->"到"完成"按钮的文本
  • 等。

解决方法 1:

有 (至少) 两种方法做到这一点︰

方法 1︰ 简单的方式

你将通过在您的视图中添加逻辑︰

<input type="button" disabled=<%= Model.number <= 0 %> />

其中 Model.number 是由你的控制器传递到视图的项的计数。如果它是小于或等于零, disabled 将会是 true

语法可能不准确,我没有试过,但这是我会去做你想做的路径。

这将工作的初始设置为值;更改而无需刷新页面是使用 JavaScript,正如其他答案指出。

方法 2: 过于复杂但更多的 MVC 方式

如果你想要的控制器,而不是视图中的逻辑,你应该设置一个特定的 ViewModel 对象,您可以添加到逻辑︰

视图模型

public class MyObjectViewModel
{
    MyObject MyObject {get; private set; }
    bool Enabled; {get; set; }
    public MyObjectViewModel(MyObject obj)
    {
        MyObject = obj;
    }
    string IsEnabled
    {
        get
        {
             if (Enabled)
             {
                 return "";
             }
             else return "disabled=disabled";
        }
    }

控制器

public ActionResult Show(int id)
{
    MyObject myObject = repository.GetMyObjectById(id)
    MyObjectViewModel movm = myObject; 
    movm.Enabled = myObject.number > 0;
    return View(movm);
}

视图

<input type="button" <%= Model.IsEnabled %> />

再次,语法和用法可能不是很好,我这掉我的头上,并不是在一个位置,在这里我可以为你测试的样机。

如果你有兴趣在 Viewmodel,这里有一些很好的资源︰

我已经更新了它返回 disabled=disabled 使用字符串,如果它实际上禁用。

赞助商