Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 传递外键MVC Create操作的正确方法_C#_.net_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C# 传递外键MVC Create操作的正确方法

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

我正在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_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