在 mvc3 中调用局部视图

Calling a partial view in mvc3

这可能是一个重复的标题,但我有一个不同的问题。我有这个代码

 public ActionResult _FieldAssignmentView()
    {
        Shift shift = new Shift();
        Person person = new Person();
        Signatory sig = new Signatory();
        ViewBag.ShiftId = new SelectList(db.Shifts, "ShiftId", "ShiftDesc", shift.ShiftId);
        var empid = (from p in db.People join s1 in db.Employees on p.PersonId equals s1.PersonId select new { CompleteName = p.CompleteName, s1.EmployeeId });
        ViewBag.EmployeeID = new SelectList(empid, "EmployeeId", "CompleteName", null).OrderBy(m => m.Text);

        if (Roles.IsUserInRole(User.Identity.Name, "divisionhead") && Roles.IsUserInRole(User.Identity.Name, "director"))
        {
            return PartialView("_FieldAssignment");
        }           
        else
        {
            return PartialView("_FieldAssignmentForEmployee");               
        }
      //  return View();
    }

现在我的问题是 return 两(2)个局部视图是可能的吗?。 我有四个部分视图 (1,2,3,4),我为员工 log.in 复制视图 1 和 4 以禁用某个按钮。例如,员工将 log.in 在我的其他代码中查看 1,而 4 将 return。 如果可能怎么办?谢谢

For example the employee will log.in view 1 and 4 will return in my else code. If possible how?

您可以创建另一个包含其他 2 个局部视图的容器局部视图。

LoggedInUserView.cshtml

@Html.Partial("_FieldAssignment")
@Html.Partial("_FieldAssignmentForEmployee")

现在在你的其他条件下,你可以return这个视图

return PartialView("LoggedInUserView.cshtml");

如果你想禁用这些视图中的任何一个按钮,你可以添加一个布尔值 属性 到你的视图模型并在你的操作方法中设置值并使用它有条件地显示 disabled/enabled 按钮

public class FieldAssignmentViewModel
{
   public bool IsAllowedToAssign {set;get;}
}

并且在您的操作方法中,

var vm = new FieldAssignmentViewModel();
vm.IsAllowedToAssign = true; // Set this value based on your custom condition.
return View(vm);

现在,您传递此对象的视图应该是我们视图模型的强类型。

_FieldAssignment.cshtml

@model FieldAssignmentViewModel
@using(Html.BeginForm())
{
 @if(Model.IsAllowedToAssign)
 {
   <input type="submit" value="Assign" />
 }
 else
 {
   <input type="button" disabled value="Assign" /> 
 }
}