gpt4 book ai didi

asp.net-mvc-3 - mvc3 : html. beginform 搜索返回空查询字符串

转载 作者:行者123 更新时间:2023-12-01 12:56:45 24 4
gpt4 key购买 nike

在 MVC3 应用程序中,我有以下 View :

@using (Html.BeginForm("Index", "Search", new {query = @Request.QueryString["query"]}, FormMethod.Post))
{
<input type="search" name="query" id="query" value="" />
}

当我输入 url“/Search?query=test”时,我的 Index 操作中的 Request.Querystring 会完美地读出搜索值(我将我的路由设置为忽略 url 中的操作)。当我在搜索框中键入它时,它会触发正确的操作和 Controller (因此路由看起来很好)但查询字符串仍然为空。我做错了什么?

最佳答案

问题是您正在查看 Request.QueryString 集合。但是您正在执行 POST,因此 query 值位于 Request.Form 集合中。但我认为您希望您的 TextBox 充满数据,因此可以像在我的示例中那样做。

示例

@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<input type="search" name="query" id="query" value="@Request.Form["query"]" />
}

但这不是真正的 MVC 方法。您应该为此创建一个 ViewModel。

型号

namespace MyNameSpace.Models
{
public class SearchViewModel
{
public string Query { get; set; }
}
}

查看

@model MyNameSpace.Models.SearchViewModel

@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.TextBoxFor(x => x.Query)
<input type="submit" />
}

Controller

public ActionResult Index()
{
return View(new SearchViewModel());
}

[HttpPost]
public ActionResult Index(SearchViewModel model)
{
// do your search
return View(model);
}

关于asp.net-mvc-3 - mvc3 : html. beginform 搜索返回空查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9279741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com