Asp.net mvc 具有自更新功能的局部视图
我正在学习ASP.NETMVC,在我的实践项目(MVC音乐商店)中遇到了一个问题。我做了一个局部视图来搜索一个艺术家。我希望部分观点不带任何论据,而是独立运作 右半部分的局部视图 我有一个特定于视图的模型,用于艺术家搜索局部视图。模型如下:Asp.net mvc 具有自更新功能的局部视图,asp.net-mvc,partial-views,Asp.net Mvc,Partial Views,我正在学习ASP.NETMVC,在我的实践项目(MVC音乐商店)中遇到了一个问题。我做了一个局部视图来搜索一个艺术家。我希望部分观点不带任何论据,而是独立运作 右半部分的局部视图 我有一个特定于视图的模型,用于艺术家搜索局部视图。模型如下: public class ArtistSearch { public string SearchString { get; set; } public List<Artist> SearchResult { get; set;
public class ArtistSearch
{
public string SearchString { get; set; }
public List<Artist> SearchResult { get; set; }
public ArtistSearch()
{
SearchResult=new List<Artist>();
}
}
public ActionResult Search(string query)
{
ArtistSearch asResult = new ArtistSearch();
if (query != null)
{
var temp = from a in db.Artists
where a.Name.Contains(query)
select a;
asResult.SearchResult = temp.ToList();
asResult.SearchString = query;
}
return PartialView(asResult);
}
@model MvcMusicStore.Models.ArtistSearch
<div class="big-search-box">
<form action="@Url.Action("Search","Artist")" method="post" role="form">
<div class="input-group">
@Html.TextBox("query", @Model.SearchString, new { @class = "form-control nrb input-lg", placeholder = "Input your search query..." })
<div class="input-group-btn">
<input type="submit" name="Send" value="Search" class="btn btn-primary btn-iconed btn-lg" />
</div>
</div>
</form>
</div>
<div class="big-search-result-info clearfix">
<div class="pull-left">Showing results for <strong>@Model.SearchString</strong>.</div>
<div class="pull-right"><strong>@Model.SearchResult.Count</strong> artist(s) found.</div>
</div>
<table>
@foreach (var item in @Model.SearchResult)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
<a href="@item.Id" >
<img src=@item.PhotoURL alt=@item.Name style="width:100px;height:70px;">
</a>
</td>
</tr>
}
</table>
局部视图如下:
public class ArtistSearch
{
public string SearchString { get; set; }
public List<Artist> SearchResult { get; set; }
public ArtistSearch()
{
SearchResult=new List<Artist>();
}
}
public ActionResult Search(string query)
{
ArtistSearch asResult = new ArtistSearch();
if (query != null)
{
var temp = from a in db.Artists
where a.Name.Contains(query)
select a;
asResult.SearchResult = temp.ToList();
asResult.SearchString = query;
}
return PartialView(asResult);
}
@model MvcMusicStore.Models.ArtistSearch
<div class="big-search-box">
<form action="@Url.Action("Search","Artist")" method="post" role="form">
<div class="input-group">
@Html.TextBox("query", @Model.SearchString, new { @class = "form-control nrb input-lg", placeholder = "Input your search query..." })
<div class="input-group-btn">
<input type="submit" name="Send" value="Search" class="btn btn-primary btn-iconed btn-lg" />
</div>
</div>
</form>
</div>
<div class="big-search-result-info clearfix">
<div class="pull-left">Showing results for <strong>@Model.SearchString</strong>.</div>
<div class="pull-right"><strong>@Model.SearchResult.Count</strong> artist(s) found.</div>
</div>
<table>
@foreach (var item in @Model.SearchResult)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
<a href="@item.Id" >
<img src=@item.PhotoURL alt=@item.Name style="width:100px;height:70px;">
</a>
</td>
</tr>
}
</table>
@model MvcMusicStore.Models.ArtistSearch
@TextBox(“query”、@Model.SearchString,new{@class=“form control nrb input lg”,placeholder=“input your search query…”)
显示@Model.SearchString的结果。
@Model.SearchResult.Count已找到艺术家。
@foreach(@Model.SearchResult中的var项)
{
@DisplayFor(modelItem=>item.Name)
}
我希望将此局部视图放置在网站的任何位置。假设我将它(使用RenderAction)放置在艺术家/索引控制器视图页面上
我试图实现的一个简单功能是,当我单击search时,它应该使用搜索结果自动更新部分视图。现在它正在把我转到艺术家/搜索页面
感谢您的耐心。尝试使用Ajax.BeginForm,下面是一个示例: 行动
public ActionResult Search(string query)
{
ArtistSearch asResult = new ArtistSearch();
if (query != null)
{
var temp = from a in db.Artists
where a.Name.Contains(query)
select a;
asResult.SearchResult = temp.ToList();
asResult.SearchString = query;
}
return PartialView("MyParitalView",asResult);
}
查看
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
@using (Ajax.BeginForm("Search", "Home", new AjaxOptions { UpdateTargetId = "result" }))
{
<div class="input-group">
@Html.TextBox("query", @Model.SearchString, new { @class = "form-control nrb input-lg", placeholder = "Input your search query..." })
<div class="input-group-btn">
<input type="submit" name="Send" value="Search" class="btn btn-primary btn-iconed btn-lg" />
</div>
</div>
}
<div id="result"></div>
@model MvcMusicStore.Models.ArtistSearch
<div class="big-search-result-info clearfix">
<div class="pull-left">Showing results for <strong>@Model.SearchString</strong>.</div>
<div class="pull-right"><strong>@Model.SearchResult.Count</strong> artist(s) found.</div>
</div>
<table>
@foreach (var item in @Model.SearchResult)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
<a href="@item.Id">
<img src=@item.PhotoURL alt=@item.Name style="width:100px;height:70px;">
</a>
</td>
</tr>
}
</table>
@使用(Ajax.BeginForm(“搜索”、“主页”、新的AjaxOptions{UpdateTargetId=“result”}))
{
@TextBox(“query”、@Model.SearchString,new{@class=“form control nrb input lg”,placeholder=“input your search query…”)
}
顶视图:我的顶视图
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
@using (Ajax.BeginForm("Search", "Home", new AjaxOptions { UpdateTargetId = "result" }))
{
<div class="input-group">
@Html.TextBox("query", @Model.SearchString, new { @class = "form-control nrb input-lg", placeholder = "Input your search query..." })
<div class="input-group-btn">
<input type="submit" name="Send" value="Search" class="btn btn-primary btn-iconed btn-lg" />
</div>
</div>
}
<div id="result"></div>
@model MvcMusicStore.Models.ArtistSearch
<div class="big-search-result-info clearfix">
<div class="pull-left">Showing results for <strong>@Model.SearchString</strong>.</div>
<div class="pull-right"><strong>@Model.SearchResult.Count</strong> artist(s) found.</div>
</div>
<table>
@foreach (var item in @Model.SearchResult)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
<a href="@item.Id">
<img src=@item.PhotoURL alt=@item.Name style="width:100px;height:70px;">
</a>
</td>
</tr>
}
</table>
@model MvcMusicStore.Models.ArtistSearch
显示@Model.SearchString的结果。
@Model.SearchResult.Count已找到艺术家。
@foreach(@Model.SearchResult中的var项)
{
@DisplayFor(modelItem=>item.Name)
}
只需稍加修改即可工作。必须将部分视图的所有控件放在具有id结果的div中。感谢您的帮助。您的实践项目是已发布的、在线教程还是可在GitHub上获得?是的,请为它添加链接:)这样我就可以学习了