如何在c#中的控制器方法中从URL中提取ID?

时间:2017-05-16 09:55:00

标签: c# url model-view-controller controller anchor

我有一个带标签ID的网址:

http://localhost:19269/Member/Edit/35b46e40-b4b4-4e61-bcee-f5cc4f4fac94#tab_content2

当我提交beginform时,我想从网址中提取(在我的控制器中)“#tab_content2”。

我试过“Request.Url.AbsolutePath”但我只能访问http://localhost:19269/Member/Edit/35b46e40-b4b4-4e61-bcee-f5cc4f4fac94而不是锚链接...

提前致谢

1 个答案:

答案 0 :(得分:2)

TL; DR :你不能

浏览器从不传输URI的哈希部分(#符号后面的任何内容)。

From RFC 2396

  

当使用URI引用对标识的资源执行检索操作时,通过交叉线("#")字符与URI分隔的可选片段标识符包含其他参考信息。在检索操作成功完成后由用户代理解释。因此,它不是URI的一部分,但通常与URI结合使用。

获取片段部分的唯一方法是使用javascript获取它,然后将其作为查询字符串参数或作为帖子数据发送到表单中。

一种可能的解决方法(如果您使用的是jQuery):

$("#myForm").submit(function() {
    $("#myHiddenInput").val(window.location.hash);
});

假设myForm为您的HTML表单的ID,并myHiddenInput作为<input type="hidden">的ID用于此特定目的。

从服务器端,您必须将隐藏的输入映射到模型,以便能够检索此数据。