我的SearchUsers视图如下:
<% using (Html.BeginForm())
{%>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%= Html.Label("Search Users:" %>
</div>
<div class="editor-field">
<%= Html.TextBox("keyword") %>
</div>
<p>
<input type="submit" value="Search" />
</p>
</fieldset>
<%} %>
<table>
<tr>
<th>
TITLE
</th>
<th>
FIRSTNAME
</th>
<th>
LASTNAME
</th>
</tr>
<% foreach (var item in Model)
{ %>
<tr>
<td>
<%= Html.ActionLink("GetProfile", "User", new { username=item.USERNAME }) %>
|
<%= Html.ActionLink("UpdateProfile", "User", new { username=item.USERNAME })%>
</td>
<td>
<%= Html.Encode(item.TITLE) %>
</td>
<td>
<%= Html.Encode(item.FIRSTNAME) %>
</td>
<td>
<%= Html.Encode(item.LASTNAME) %>
</td>
</tr>
<% } %>
在该行发出异常:
<% foreach (var item in Model)
我希望模型仅在执行搜索后才与数据绑定,但是当我第一次访问此视图时,它似乎尝试绑定数据。我该如何防止这种情况?
我的控制器是这样的:
public ActionResult SearchUsers()
{
return View();
}
[HttpPost]
public ActionResult SearchUsers(FormCollection collection)
{
DBServiceLinq db = new DBServiceLinq();
Acctinfo acct = new Acctinfo();
acct = db.SearchUsers(collection["keyword"]);
return View(acct);
}
我的SearchUsers方法如下:
[WebMethod]
public Acctinfo SearchUsers(string keyword)
{
var q = from acctinfo in db.Acctinfos
where acctinfo.USERNAME.Contains(keyword)
select acctinfo;
Acctinfo a = new Acctinfo();
a = q.First();
return a;
}
答案 0 :(得分:1)
假设exectipon是一个空引用异常,可能是第一次设置视图:
public ActionResult SearchUsers()
{
return View();
}
您的模型为空。假设您的模型是一个将在模型的构造函数中创建的List,您尝试过
return (new MyModel());
无论如何,在foreach之前的视图中,您可以检查模型是否为空
<% if(Model != null) {
foreach(....)
<强>更新强>
此外,对帖子作出反应的方法应该返回一个列表
[HttpPost]
public ActionResult SearchUsers(FormCollection collection)
{
DBServiceLinq db = new DBServiceLinq();
IList<Acctinfo> acct = db.SearchUsers(collection["keyword"]);
return View(acct);
}
[WebMethod]
public IList<Acctinfo> SearchUsers(string keyword)
{
var q = (from acctinfo in db.Acctinfos
where acctinfo.USERNAME.Contains(keyword)
select acctinfo).ToList();
return q;
}