【问题标题】:.aspx & c# how to change URL value.aspx & c# 如何更改 URL 值
【发布时间】:2020-12-15 07:24:44
【问题描述】:

我在设置 URL 值时遇到了一些问题,我有以下 URL:

http://localhost/myapp/Admin/ScheduleTaskDetail.aspx?id=1&mode=v

模式有:

  • v - 查看
  • e - 编辑
  • a - 新

我想允许对视图页面进行更改,以便当我单击按钮时他们可以进行编辑。我已经设法通过使用从 URL 读取的函数并在那里改变它的行为来实现这个工作。但是我不知道如何在没有response.redirect() 的情况下更新 URL。

有没有办法将代码添加到onclick 事件,这将改变&mode=??

很遗憾,我无法共享代码,因为它不是我要共享的代码。

这是 MVC c#/aspx 项目的一部分。

如果有问题回答此问题,请告诉我我找不到适用的匹配项。

【问题讨论】:

  • 您可以执行 JavaScript 并具有重写 URL 的能力。我敢肯定,一些快速的谷歌搜索会告诉你如何做到这一点。然后只需将该 JavaScript 连接到您的按钮即可。
  • 在这种情况下我不能使用 javascript。这一切都是通过 c# 在 mvc 应用程序中完成的(我将在问题中添加该细节)
  • 为什么不能使用 JavaScript?是什么阻止你这样做?是什么阻止您在 C# 中执行 Response.Redirect?
  • 因为我没有为 .net 项目中的一个更改实现 javascript。此外,我宁愿不使用 response.redirect,因为我不希望页面重新加载,如果必须,我会但希望看看是否有可能在没有太多麻烦的情况下进行这一单一更改。可悲的是我正在挣扎。
  • 你猜怎么着?客户端代码 (JavaScript) 是在不实际导航到不同页面的情况下更新 URL 的唯一方法。制定不向 Web 应用程序添加 JavaScript 的策略是愚蠢的 - 学习使用正确的工具来完成这项工作。否则,您可以从服务器执行 Response.Redirect 以实际让浏览器导航到不同的 URL(更改查询字符串被浏览器视为不同的 URL,即使您最终在 ASP.NET MVC 中使用相同的操作方法)。

标签: c# asp.net asp.net-mvc url


【解决方案1】:

无需使用 JavaScript 重新加载即可更改浏览器 URL

HTML 标记由 3 个按钮组成,它们调用函数 ChangeUrl。此函数接受页面标题和 URL 作为参数。

它首先检查浏览器是否支持 HTML5,如果支持,则创建一个包含页面标题和 URL 的 State 对象,并与页面标题和 URL 作为其他两个参数一起传递给 HTML5 History pushState 方法。

<script type="text/javascript">
function ChangeUrl(title, url) {
    if (typeof (history.pushState) != "undefined") {
        var obj = { Title: title, Url: url };
        history.pushState(obj, obj.Title, obj.Url);
    } else {
        alert("Browser does not support HTML5.");
    }
}
</script>
<input type="button" value="Page1" onclick="ChangeUrl('Page1', 'Page1.htm');" />
<input type="button" value="Page2" onclick="ChangeUrl('Page2', 'Page2.htm');" />
<input type="button" value="Page3" onclick="ChangeUrl('Page3', 'Page3.htm');" />

无需使用 jQuery 重新加载即可更改浏览器 URL

HTML 标记由 3 个按钮组成,jQuery click 事件处理程序已分配给这些按钮。在 jQuery click 事件处理程序中,正在调用一个函数 ChangeUrl,它接受页面标题和 URL 作为参数。

此函数首先检查浏览器是否支持 HTML5,如果支持,则创建一个包含页面标题和 URL 的 State 对象,并与页面标题和 URL 作为其他两个参数一起传递给 HTML5 History pushState 方法。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
    function ChangeUrl(page, url) {
        if (typeof (history.pushState) != "undefined") {
            var obj = { Page: page, Url: url };
            history.pushState(obj, obj.Page, obj.Url);
        } else {
            alert("Browser does not support HTML5.");
        }
    }
    $(function () {
        $("#button1").click(function () {
            ChangeUrl('Page1', 'Page1.htm');
        });
        $("#button2").click(function () {
            ChangeUrl('Page2', 'Page2.htm');
        });
        $("#button3").click(function () {
            ChangeUrl('Page3', 'Page3.htm');
        });
    });
</script>
<input type="button" value="Page1" id="button1" />
<input type="button" value="Page2" id="button2" />
<input type="button" value="Page3" id="button3" />

【讨论】:

  • 我最后做了一个解决方法,它忽略了 url,但只是根据我创建的设置更新了页面的所有内容,以了解页面应该是什么状态。但是,如果我返回代码,我将按照我所需要的方式实现它。
【解决方案2】:

也许更好的方法是在页面上使用一个控件来触发 V、E、A 值并根据用户单击的内容触发适当的事件,而不是试图在使用 URL 查询字符串时强加于人。选择。例如,一个带有 V、E 和 A 的下拉列表。用户选择他们想要的值,然后在 selectedindexchange 事件中完成绑定。如果您只想刷新页面的适用部分,则可以使用 updatePanels。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多