使用.NET在POST上动态地将查询参数附加到URL

时间:2013-12-06 11:05:03

标签: c# .net

我有一个非常简单的html表单,在提交后,应该将用户重定向到另一个页面。表单中有一个字段,如果用户输入了值,则需要将该值附加到重定向Url(通过查询字符串)。

因此,如果用户在表单中输入“hello”,它们将被重定向到“mysite.com?x=hello”,否则它将直接指向“mysite.com?x=”。目前我的代码忽略了我的POST中的IF语句,任何人都可以看到问题是什么?

这是我的代码:

<form>
    <input type="text" id="test" name="test" />
    <input type="submit" value="Submit" />
</form>

if(IsPost){
    var x = Request.Form["test"].IsEmpty() ? false : true;

    if(x){
        x = "hello";
    }

    Response.Redirect("http://www.mysite.com?x=" + x);
}

2 个答案:

答案 0 :(得分:2)

当您尝试将字符串("hello")分配给布尔值xtrue / false)时,您的当前代码将无法编译,但您只需指定当x为假时,即当Request.Form["test"]为空时。

试试这个:

string redirectTo = Request.Form["test"];
if (string.IsNullOrEmpty(redirectTo))
{
    redirectTo = "hello";
}

Response.Redirect("http://www.mysite.com?x=" + HttpUtility.UrlEncode(redirectTo));

有些不清楚你想要从你的问题中发生什么,但你必须能够从这里弄明白。如果您想在输入为空时重定向到?x=,只需移除if块,因为Request.Form["not entered item"]将返回null

@ChrisK对你的问题发表评论,有更好的方法可以做到这一点。

答案 1 :(得分:1)

您正在检查IsPost但它应该是IsPostBack

请参阅此MSDN文章以供参考。