在ActionResult中设置传递值

时间:2012-11-28 07:48:04

标签: asp.net-mvc-3 entity-framework c#-4.0

我有两个独立的类来模拟我的表。首先,当创建新用户时,用户在证书表中没有记录。因此,在证书视图中,我添加了一个按钮,为这个新用户添加证书详细信息。  这是我的用户视图代码:我省略了分页/搜索和过滤代码,使其变得简单

public ActionResult Index()
var recipients = from s in db.User
                         select s;
 return View(recipients.ToList());

这是显示相关数据的详细信息视图:

   public ViewResult Details(int id)
   {

   var certificateDetails = db.Certificate.Where(p => p.ID == id);
   return View(certificateDetails);
   }

添加新用户意味着还要添加新证书详细信息。我希望当用户单击特定用户的详细信息时,如果这些详细信息将被重定向到同时设置了User.ID和CertificateID的创建证书视图。实际上CertificateID是AI,但User的ID是外键。 我本来会使用Fluent API,但它不是很好,所以必须在代码中处理这个看似很小的挑战。

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您需要它以便在查看Details()时,如果证书详细信息不存在,那么重定向到页面以创建它们吗?

只检查实体是否存在。如果没有,则返回RedirectToAction()并传递路径数据集合中所需的任何数据。

public ViewResult Details(int id)
{
    var certificateDetails = db.Certificate.FirstOrDefault(p => p.ID == id);

    if (certificateDetails == null)
        return RedirectToAction("Create", "Certificate", new { userId = id });

    return View(certificateDetails);
}

您还需要使用Create()操作创建证书控制器。