【发布时间】:2015-01-27 10:41:39
【问题描述】:
我想要一个显示“设置用户默认值”的操作链接。数据库可能尚未为单击链接的用户存储 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();
}
【问题讨论】:
-
Edit()和Create()是什么,显示他们的定义 -
一个选项可能是将操作链接设置为
Edit,然后在Edit()方法中进行检查,如果user是null,RedirectToAction("Create"); -
@EhsanSajjad Edit(user) 和 Create() 是标准的 MVC 公共 ActionResult 方法。
-
所以他们不适合你?
-
我认为这不会被认为是“糟糕”的做法(例如,通常当您发布到编辑方法时,您会重定向到其他地方或根据检查
ModelState.IsValid返回视图)。虽然我个人会在您生成视图时进行检查,然后使用更具描述性的显示文本呈现一个或另一个链接
标签: asp.net-mvc asp.net-mvc-4 actionlink html.actionlink