C# 传递外键MVC Create操作的正确方法
我正在VS2013中使用MVC5开发一个站点,我有一个实体,例如:C# 传递外键MVC Create操作的正确方法,c#,.net,asp.net-mvc,asp.net-mvc-5,C#,.net,Asp.net Mvc,Asp.net Mvc 5,我正在VS2013中使用MVC5开发一个站点,我有一个实体,例如: Subcategory { ID_Subcategory int, ID_Category int, ID_Product int, Value string } 在“创建”视图中,它显示了外键的下拉列表 现在,我从Product/Edit/5视图中使用以下内容访问此页面/操作: <a href="@Url.Action("Create", "Subcategory", new { ID_P
Subcategory {
ID_Subcategory int,
ID_Category int,
ID_Product int,
Value string
}
在“创建”视图中,它显示了外键的下拉列表
现在,我从Product/Edit/5
视图中使用以下内容访问此页面/操作:
<a href="@Url.Action("Create", "Subcategory", new { ID_Product = Model.ProductID })">
它工作得很好,现在我的产品设置在相应的下拉列表中,但URL如下所示:
http://localhost:54372/Subcategory/Create?ID_Product=2
我认为这可能会带来安全风险,所以,请告诉我:
- 这可能是安全风险吗李>
- 在URL中显示ID/外键是一种糟糕的做法吗
- 我不想在URL中显示外键ID,那么,有没有更好的方法在这个上下文中传递外键
谢谢为什么会有安全风险?(用户可以直接在地址栏中输入)是的,我知道用户可以在url中输入任意数字o,但我不是说这是一个安全风险,我是问是否可能是一个?因为我不知道在表单中发布id,所以它不会显示在url中。创建或编辑操作无论如何都不应该是获取链接--。这样做没有问题。如果将参数改为id而不是id\u Product,则如果使用默认路由http://localhost:54372/Subcategory/Create/2
。如果您有不想让用户看到的产品,您应该在显示视图之前在控制器中验证它。@Jasen,这不是保存新产品或编辑产品的调用,而是用于显示定义了一些外键的字段,但是是的,我没有想过从GET切换到POST哈哈哈,非常感谢
http://localhost:54372/Subcategory/Create?ID_Product=2