Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Asp.net mvc 2 如何不通过URL传递参数?_Asp.net Mvc 2_Url Routing_Parameter Passing - Fatal编程技术网

Asp.net mvc 2 如何不通过URL传递参数?

Asp.net mvc 2 如何不通过URL传递参数?,asp.net-mvc-2,url-routing,parameter-passing,Asp.net Mvc 2,Url Routing,Parameter Passing,首先对不起我的英语不好,我是法国人。我会尽力让我明白: 我想在不使用url的情况下将参数从视图传递到控制器 参数是一个用户ID,我不希望有人在url中手动更改它 查看我的代码: <% foreach (var item in ViewData["ClientsList"] as List<SalesCoverseal_V2.Models.Customer>) { %> <tr> <td&g

首先对不起我的英语不好,我是法国人。我会尽力让我明白:

我想在不使用url的情况下将参数从视图传递到控制器

参数是一个用户ID,我不希望有人在url中手动更改它

查看我的代码:

  <% foreach (var item in ViewData["ClientsList"] as List<SalesCoverseal_V2.Models.Customer>)
           { %>
        <tr>
            <td>
                <%: Html.ActionLink("Editer", "ClientEdit", new { id=item.PersonId }) %>

          <%: Html.ActionLink("Faire une offre", "Index", new { controller
= "Offer", id=item.PersonId }) %>

你能帮我吗?谢谢

如果您不想在url中传递id,您必须“发布”请求,即提交表单。 可以通过将id放置在隐藏字段中来实现这一点。您应该知道,这本身不是防篡改的。 如果您想确保您的用户id没有被篡改,那么您必须在将其发送到客户端之前对其进行加密,然后在返回时对其进行解密,这样您就可以检查它是否以任何方式被修改。
此外,您可以将您的操作方法标记为仅接受Post请求,以防止任何人尝试使用Get请求访问它。

如果这是当前用户身份的一部分,则某种cookie似乎是正常的方法,但是,除非您将cookie的内容设置为加密签名的值,或者将其设置为某个值的不透明、不可预测的查找Guid,否则cookie很容易被欺骗。在任何一种情况下,您都希望设置时间限制以防止重播


如果你只是不想要URL上的数据,帖子可能会有帮助,但你不能重定向到帖子。

使用帖子而不是GET并不能真正解决你的问题,因为任何人都可以像GET一样轻松地伪造帖子

我建议您检查服务器端的用户是否具有查看数据的权限

你到底想做什么?你可能需要一个电话

嗯,,
Charles

我想,但是当我使用FormMethod.Post时,我的参数不会在控制器的[HttpPost]中传递。当你使用FormMethod.Post时,你的所有表单值都会在表单集合中的请求中传递,而不是作为查询字符串的url。在服务器上,然后使用模型绑定将这些值映射到操作参数。
 public ActionResult Index(string id)
        {
            if (currentLoginUser != null)
            {                
                CurrentCustomer = WebService.GetClientInfos(id);
                SessionManager.CurrentCustomer = CurrentCustomer;

                OfferViewModel viewmodel = new OfferViewModel();

                return View(viewmodel);

            }


My url : 

> http://localhost:50905/Offer/Index/WS00000401

But I don't want this url, I want 

> http://localhost:50905/Offer/