这是一个非常基本的模型/视图/控制器,并且模型不会从带有任何数据的视图进入控制器。这可能是我想念的基本内容!
两种模式:
Namespace Models
Public Class Search
Public Property Search() As String = String.Empty
Public Property Member() As Member = Nothing
End Class
End Namespace
Namespace Models
Public Class Member
Public Property ContactRefID() As String = String.Empty
End Class
End Namespace
控制器:
Imports Test.Models
Imports Test.Services
Namespace Test
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index() As ActionResult
Dim search As New Search
Return View("Index", search)
End Function
<HttpPost()>
Function Index(ByVal search As Search) As ActionResult
Dim member As New Member
Dim homeRepository As New HomeRepository
member = homeRepository.GetMemberData(search)
search.Member = member
Return View("Index", search)
End Function
End Class
End Namespace
查看:
@ModelType Test.Models.Search
@Code
ViewData("Title") = "Search Page"
End Code
@Using Html.BeginForm("Index", "Home", FormMethod.Post)
@<div class="row">
<div class="col-md-4">
<label>Search Member/Account Number:</label>
@Html.TextBoxFor(Function(model) model.Search)
<br /><br />
<button id="btnSubmit" type="submit" class="btn btn-primary btn-large clrButton">
Search
</button>
</div>
</div>
<div class="row">
@*...To be filled with Search.Member data*@
</div>
End Using
当我在文本框中输入成员/帐号以启动搜索时,搜索值不会被发送到控制器中的第二个索引功能。它肯定会被调用,因为我内部的断点被击中,但“ByVal搜索为搜索”又回来了。
我在2013年知道模型不需要get:set项目,但我尝试添加它们但仍然无效。
我还在顶部索引中为search.Search设置了一个值,文本框中填充了该值。但是当我单击“搜索”按钮时,它也不会被发送到第二个索引函数。
有什么建议吗?
答案 0 :(得分:1)
DefaultModelBinder
无法绑定/识别属性 - 在本例中为Search
。只需将属性更改为其他内容,您就可以开始......
一般来说,考虑一下你要创建的对象并避免这种重言式是一种很好的做法。如果听起来合理,您可以更轻松地维护这些对象。例如。在这种情况下,您为您的班级使用名称Search
。将寻求的价值命名为Search也没有任何意义。只需按名称命名即可 - SoughtValue