0

在我看来,我定义了一个简单的 asp:HiddenField 如下:

<asp:HiddenField ID="hdnUserRole" runat="server" />

现在,我将我的 RedirectToAction 定义为

if (Something)
        {
            return RedirectToAction("Index", "AdminView", new { UserRole = "Admin" });
        }
        else
        {
            return RedirectToAction("Index", "AdminView", new { UserRole = "Inquiry" });
        }

在Controller中,我想将上面定义的隐藏字段分配给UserRole的值。这里的想法是隐藏视图中存在的更新按钮。我计划在 jQuery(document).ready 函数中做同样的事情。我感谢你们可能拥有的任何帮助或任何替代方法。

 public class AdminViewController : Controller
{
    //
    // GET: /AdminView/

    #region Index With Roles

    public ActionResult Index(String UserRole)
    {
        if (UserRole == "Admin")
        { 
            //ToDo: Update the hidden field "hdnUserRole"

        }
        else if (UserRole == "Inquiry")
        { 

        }

        return View();
    }

 }
4

1 回答 1

0

通过查看您要实现的目标,我认为您需要一些通用Admin操作,一个通用操作,另一个调用Inquiry,它们应该使用相同的View. 那么,如何代替您的路线...

AdminView/Index/Admin
AdminView/Index/Inquiry

...你使用类似的东西:

Admin/Index
Admin/Inquiry

所以你的重定向现在看起来像:

return ReidrectToAction("Index", "Admin")
return RedirectToAction("Inquiry", "Admin")

从这里你有两种方法。如果除了隐藏几个按钮之外整个页面都相同,则可以返回完全相同的View. 否则,我会将您的共享组件放在一个部分中View,并为每个Action都使用共享组件的页面。我将描述第一种方法让你继续前进。因此,您可以有两个返回相同的操作View

public class AdminController : Controller
{
    //
    // GET: /Admin/Index

    public ActionResult Index()
    {
        ViewBag.Source = "admin";
        return View("Index");
    }

    //
    // GET: /Admin/Inquiry

    public ActionResult Inquiry()
    {
        ViewBag.Source = "inquiry";
        return View("Index");
    }
}

我假设View被调用Index并且位于Views/Admin.

然后在页面加载的 JavaScript 中,您可以使用我们ViewBag.Source在控制器中分配的字符串做任何您想做的事情:

<script type="text/javascript">
    var context = '@ViewBag.Source'; // will be 'admin' or 'inquiry'
</script>

但是,对于您要实现的目标,您最好只在剃须刀中进行。

@if(ViewBag.Source == "admin") // I came from Admin/Index!
{
    <button type="button">Update</button>
}

如果您仍然想要页面上的隐藏字段,您可以使用:

@Html.Hidden("Source", (string)ViewBag.Source) // must cast

这将呈现以下html:

<input id="Source" name="Source" type="hidden" value="admin">
于 2013-03-11T20:47:34.287 回答