我需要在属性'标记'时禁用按钮。是真的。这是我的模特和控制器。
public class User {
public string Name { get; set; }
public bool Flag{ get; set; }
}
控制器
public ViewResult Index() {
var userFlag = context.Users.Where(u => u.Flag = true).FirstOrDefault();
if (userFlag != false)
{
// disable button
}
else
{
// enable button
}
return View();
}
答案 0 :(得分:1)
您必须将该标志(布尔值)传递给视图,并有条件地呈现具有disabled
属性的按钮
您可以通过多种方式传递布尔值。
如果您有视图模型,请设置它的相应属性。假设您有一个名为YourViewModel
的视图模型用于您的视图,它具有布尔类型的IsEnabled
属性,在您的操作方法中设置该属性并将视图模型发送到视图。
所以在你的行动方法中
var vm = new YourViewModel();
var user = context.Users.Where(u => u.Flag == true).FirstOrDefault();
vm.IsEnabled= user != null && user.Flag;
// Pointless because you are getting the one with True;
// So the value will be always true if user is not null
return View(vm);
和视图,检查模型的IsEnabled
属性,
@model YourViewModel
@if (Model.IsEnabled)
{
<input type="submit" value="Save" />
}
else
{
<input type="submit" value="Save" disabled="disabled" />
}
或如果您没有视图模型/您的视图没有强类型化到任何类,您可以将布尔值作为页面模型传递
var user = context.Users.Where(u => u.Flag = true).FirstOrDefault();
var flag= user != null && user.Flag;
// Pointless because you are getting the one with True;
// So the value will be always true if user is not null
return View("Index",flag);
并在视图中
@model bool
@if (Model)
{
<input type="submit" value="Save" />
}
else
{
<input type="submit" value="Save" disabled="disabled"/>
}
另一个选择是使用ViewBag将此布尔标志从action方法转移到view。
var user = context.Users.Where(u => u.Flag == true).FirstOrDefault();
ViewBag.IsEnabled = user != null && user.Flag;
// Pointless because you are getting the one with True;
// So the value will be always true if user is not null
return View();
并在视图中
@if (ViewBag.IsEnabled !=null && ViewBag.IsEnabled)
{
<input type="submit" value="Save" />
}
else
{
<input type="submit" value="Save" disabled="disabled" />
}
这里我只在记录的标记值为true
时呈现启用按钮。调整代码以根据需要否定它(在您的问题中,这是另一种方式)
答案 1 :(得分:1)
您在视图中禁用该按钮,而不是在控制器中。首先,控制器需要向视图发送一些信息。理想情况下,这是一个视图模型的形式,但是现在让我们在ViewBag
中添加一个简单的值。像这样:
ViewBag.UserFlag = userFlag;
return View();
然后在视图中,您可以使用该值。例如:
@if(ViewBag.UserFlag == true)
{
<button type="button" disabled>Click here</button>
}
else
{
<button type="button">Click here</button>
}
或者您的按钮在HTML中“启用”而非“禁用”。如果需要,您甚至可以使用三元条件运算符将其压缩为单行,这是个人偏好的问题。
但重点是控制器只是为视图提供渲染UI所需的数据。然后,视图负责响应该数据并呈现UI。
答案 2 :(得分:0)
您可以使用ViewBag
将标志值从控制器传递到视图
public ViewResult Index() {
var userFlag = context.Users.Where(u => u.Flag = true).FirstOrDefault();
ViewBag.UserFlag = userFlag == null ? true : false;
return View();
}
您可以在视图中停用按钮
<input type="button" value="Save" @{ if (ViewBag.UserFlag == true){ @: disabled="disabled"} } />