Asp.Net MVC使用复合键创建/更新/删除

时间:2010-04-04 20:13:15

标签: asp.net-mvc composite-key

我不确定如何使用复合键。

我的分类表有CategoryId(PK,FK),LanguageId(PK,FK),CategoryName

CategoryId | LanguageId | CategoryName
1          | 1          | Car
1          | 2          | Auto
1          | 3          | Automobile
etc.

我正在关注this设计

默认操作类似于

//
// GET: /Category/Edit/5

public ActionResult Edit(int id)
{
    return View();
}

和ActionLink

<%= Html.ActionLink("Edit", "Edit", new { id= item.CategoryId }) %>

我应该使用像

这样的东西吗?
<%= Html.ActionLink("Edit", "Edit", new { id= (item.CategoryId + "-" + item.LanguageId) }) %>

所以网址是

/Category/Edit/5-5

//
// GET: /Category/Edit/5-5

public ActionResult Edit(string id)
{
    // parse id

    return View();
}

或将路线更改为

/Category/Edit/5/5

还是有更好的方法?

2 个答案:

答案 0 :(得分:4)

嗯,这比我想象的容易:-)只需在ActionLink中将2个参数放入RouteValues中,就可以生成查询字符串。

<%= Html.ActionLink("Edit", "Edit", new { id= item.CategoryId, lang= item.LanguageId }) %>

网址为Category/Edit/1?lang=3

所以它更多地是关于路由而不是我的问题中的任何其他内容。更多关于this

答案 1 :(得分:0)

Yes, there is a better way.您还可以确定user's language and culture from the request以确定要使用的数据库中的哪条记录。我不会想出一个像1 =英语2 =德语的随机方案。使用standard culture identifiers.