我有一个非常简单的代码:
@using (Ajax.BeginForm("SearchAccount", "Account", new AjaxOptions { UpdateTargetId = "SearchResults", HttpMethod = "Get", InsertionMode = InsertionMode.Replace }))
{
<fieldset>
<input id="txtSearchBox" name="SearchString" type="text" />
</fieldset>
<input type="submit" value="Search" />
}
在控制器端我有以下代码
public PartialViewResult SearchAccount(FormCollection formCollection)
{
try
{
string SearchString = formCollection["SearchString"];
List<Moovers.DAL.Account> Accounts = Moovers.BL.Account.SearchAccount(SearchString);
return PartialView("_AccountSearchResult", Accounts);
}
catch (Exception ex)
{
throw;
}
}
问题是&#34; FormCollection&#34;,这是空的。可能的原因是什么?
答案 0 :(得分:3)
这是因为您使用"GET"
作为方法。
答案 1 :(得分:0)
为什么要使用FormCollection
?您可以直接将SearchString
作为操作参数吗?
public PartialViewResult SearchAccount(string SearchString)
{
try
{
var Accounts = Moovers.BL.Account.SearchAccount(SearchString);
return PartialView("_AccountSearchResult", Accounts);
}
catch (Exception ex)
{
throw;
}
}
如果从Form中传递多个值,则可以创建视图模型并简化生活。
实施例
public class SearchModel
{
public string SearchString { get; set; }
.. others
}
public PartialViewResult SearchAccount(SearchModel searchModel)
{
...
}
请注意,重要的是表单字段的名称应与参数/属性名称匹配。