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

MVC4 - ActionLink to either Create() or, if already existing, Edit(Id)

我想要一个说 "set user default" 的操作 link。数据库可能尚未为单击 link 的用户存储 UserDetails。如果是这种情况,我想在用户可以保存新对象时将用户定向到创建视图。

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

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

在 MVC 中 preferred/standard 实现此目的的方法是什么?

现有记录

@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();
    }

您可以通过 link 到 SetUserDefault 操作方法(例如

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

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

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

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