使用 ASP.NET Webforms,我可以将控件拖放到表单上并能够访问其属性:
if (number == 0)
AddButton.Enabled = false;
虽然我无法将控件拖放到 ASP.NET MVC View 模板上,但我可以更改其属性吗?
例如:
- 在某些情况下禁用按钮,并在情况发生变化时启用它。
- 能够将按钮文本从“下一步->”更改为“完成”
- 等等
最佳答案
有(至少)两种方法可以做到这一点:
方法一:简单的方法
您可以通过在 View 中添加逻辑来做到这一点:
<input type="button" disabled=<%= Model.number <= 0 %> />
其中 Model.number
是 Controller 传递到 View 的项目数。如果它小于或等于零,则 disabled
将为 true
。
语法可能不准确,我还没有尝试过,但这是我要做你想做的事情的路径。
这适用于值的初始设置;正如其他答案所指出的那样,在不刷新页面的情况下更改它是使用 JavaScript 的问题。
方法 2:过于复杂但更“MVC”的方式
如果您想要 Controller 而不是 View 中的逻辑,您应该设置一个特定的 ViewModel 对象,您可以将逻辑添加到其中:
View 模型
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";
}
}
Controller
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 %> />
同样,语法和用法可能有点偏差,我正在凭空想象这个原型(prototype),但我无法为您测试它。
如果您对 ViewModel 感兴趣,这里有一些很好的资源:
我已将其更新为使用字符串返回 disabled=disabled
(如果它实际上已禁用)。
关于c# - 如何访问 ASP.NET MVC 中 Html 元素的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2645011/