Vb.net 局部视图未正确更新
我相信我应该让你知道,我是一个VB.Net开发人员,花了两年时间试图学习MVC3。这并不容易。我试图将现有应用程序转换为MVC3,但遇到了问题。我的工作场所要求是带有MVC3和VB.Net的Visual Studio 2010 我有一个PartialView,当我在PartialView中单击表上的超链接时,应该进行新的搜索并显示搜索结果。这是有效的。但是,PartialView将被渲染为完整视图 我有一个带有搜索文本框的视图。底部的AccountTable将使用上述PartialView显示搜索结果。这对于在文本框中启动的搜索很有效。当我使用PartialView表的超链接开始搜索时,问题就开始了 查看-Index.vbhtml:Vb.net 局部视图未正确更新,vb.net,asp.net-mvc-3,asp.net-mvc-partialview,Vb.net,Asp.net Mvc 3,Asp.net Mvc Partialview,我相信我应该让你知道,我是一个VB.Net开发人员,花了两年时间试图学习MVC3。这并不容易。我试图将现有应用程序转换为MVC3,但遇到了问题。我的工作场所要求是带有MVC3和VB.Net的Visual Studio 2010 我有一个PartialView,当我在PartialView中单击表上的超链接时,应该进行新的搜索并显示搜索结果。这是有效的。但是,PartialView将被渲染为完整视图 我有一个带有搜索文本框的视图。底部的AccountTable将使用上述PartialView显示搜
<div style="width: 400px; margin-left: auto; margin-right: auto; margin-top: 20px;">
<p>
@Using (Ajax.BeginForm("search", "Home", New AjaxOptions With { _
.HttpMethod = "GET", _
.InsertionMode = InsertionMode.Replace, _
.UpdateTargetId = "AccountTable"}))
@<text>Account Number: </text>@Html.TextBox("SearchField")
End Using
</p>
</div>
<div id="AccountTable" class="searchPage" style="width: 400px; margin-left: auto;
margin-right: auto; margin-top: 20px;"></div>
我已经对此进行了研究,但没有找到任何帮助。My_Layouts.vbhtml文件中已包含以下脚本:
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
我发现有人建议添加一个ajax/json调用。但是,我在计算如何从表中的linkbutton获取搜索数据以作为搜索参数传入ajax/json代码时遇到了问题
有什么建议吗
以下是一些显示实际问题的屏幕截图:
初步看法:
使用PartialView查看-超链接位于Account列中
单击超链接后。搜索文本框不见了。请注意,所有css也丢失了
问题是您在哪里使用@Url.Action作为您的超链接的href。这会导致页面转到该视图,无论该视图是否为部分视图 我的建议是改用jQuery更新表。当用户单击搜索按钮时,执行Ajax请求并返回部分视图 这有一个从视图到控制器的非常基本的ajax调用
要了解更多有关如何更新该局部视图的信息,请访问另一个链接 以下是我所做的工作: 我将name属性添加到anchor标记中,以等于我需要传入的数据,并将href更改为# 它是有效的。现在partialview已正确更新
Function Index() As ActionResult
Return View()
End Function
Function Search(ByVal SearchField As String) As ActionResult
Dim acctList As New AccountList
acctList = Repository.GetAccount(SearchField)
If acctList IsNot Nothing Then
ViewData.Add("MainName", acctList(0).Name)
ViewData.Add("MainSSN", acctList(0).SSN)
acctList.RemoveAt(0)
Model = acctList
Else
Model = Nothing
End If
Return PartialView("Search", Model)
End Function
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
<a name="@item.AccountNumber" class="hlSearch" href="#">@item.AccountNumber</a>
$('.lbSearch').click(function() {
$.ajax({
cache: false,
type: "GET",
url: "@(Url.Action("search", "Home"))",
data: { SearchField: $(this).attr('name')},
success: function (data) {
$("#AccountTable").html(data);
}
});
});