MVC4 - ActionLink到Create()或者如果已经存在,则为Edit(Id)

时间:2015-01-27 10:41:40

标签: asp.net-mvc asp.net-mvc-4 actionlink html.actionlink

我想要一个说明"设置用户默认值"的操作链接。数据库可能没有为点击链接的用户存储UserDetails。如果是这种情况,我想在用户保存新对象时将用户定向到“创建”视图。

如果UserDetails已经存在于用户,我想将用户引导到他们的Edit(id)页面并从数据库加载他们现有的UserDetails。

基本上我需要一个基于某些信息指向不同视图的ActionLink。

MVC的首选/标准方式是什么?

现有记录

@Html.ActionLink("set user default", "Edit", "User")

非现有记录

@Html.ActionLink("set user default", "Create", "User")

这是我的一次尝试,但由于EditOrCreate需要成为一个视图,所以它没有工作 - 理想情况下,这种情况不需要创建另一个视图。

    public ActionResult EditOrCreate()
    {
        User user = Get(User.Identity.Name);

        if (user != null)
            Edit(user);
        else
            Create();
    }

1 个答案:

答案 0 :(得分:1)

您可以通过操作链接到SetUserDefault操作方法(如

)来实现这一点
@Html.ActionLink("set user default", "SetUserDefault", "User")

在action方法中检测用户类型,然后将用户重定向到正确的操作

public ActionResult SetUserDefault()
{
    User currentUser = Get(User.Identity.Name);

    if (currentUser != null)
        return RedirectToAction("Edit", new { id = currentUser.Id });
    else
        return RedirectToAction("Create");
}