I'm going blind staring at this. When I click save on the view, the model being sent to the save method of the controller has no values set, they're all default values. What am I missing? I'm actually using the exact same technique from another project... The data is populated just fine in my view, I can edit it and click save, the code enters the SetSiteTerms method in the controller but has none of the data from the view. :-( I know this is something simple and dumb but I just can't see it yet.
Model:
Imports System.ComponentModel.DataAnnotations
Imports System.Runtime.Serialization
<KnownType(GetType(SiteToA))> _
Public Class SiteToA
<ScaffoldColumn(False)> _
Public Property ID As Integer = 0
Public Property AgreementHTML As String = String.Empty
Public Property AgreementName As String = String.Empty
Public Property IsActive As Boolean = False
Public Sub New()
MyBase.New()
End Sub
End Class
View:
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl(Of Community_Portal_Admin.SiteToA)" %>
<% Using Html.BeginForm("SetSiteTerms", "SiteToA", FormMethod.Post, New With {.id = "SiteTermsForm"})%>
<div class="gridFrame">
<% Html.Telerik().EditorFor(Function(m) m.AgreementHTML) _
.Name("AgreementHTML") _ ' Name must be the same as the property name in the model
.Encode(True) _
.HtmlAttributes(New With {.style = "height:300px;"}) _
.Render()%>
<br />
<div class="smallFrameLeft">
<%: Html.ActionLink("Cancel", "Index", "Home", Nothing, New With {.class = "t-button", .Style = "font-size:12px;"})%>
</div>
<div class="smallFrameRight">
<input type="submit" value="Save" class="t-button" />
</div>
</div>
<% End Using%>
Controller:
Imports Telerik.Web.Mvc
Public Class SiteToAController
Inherits System.Web.Mvc.Controller
Function Index() As ActionResult
Dim setting As SiteToA
Try
setting = SiteToARepository.One(Function(d) d.IsActive = True)
ViewData.Model = setting
Return PartialView()
Catch ex As Exception
Throw
End Try
End Function
<HttpPost()> _
Function SetSiteTerms(ByVal model As SiteToA) As ActionResult
Dim setting As SiteToA
Try
setting = SiteToARepository.One(Function(d) d.ID = model.ID)
TryUpdateModel(setting)
If Not SiteToARepository.Update(setting) Then Throw New Exception("There was a problem during update")
Return PartialView()
Catch ex As Exception
Return PartialView()
Finally
If Not setting Is Nothing Then
setting.Dispose()
setting = Nothing
End If
End Try
End Function
End Class
EDIT: I've updated my view and controller. Any ideas why my model is populated, can be editing in the view but when I post with the save button, the model sent to the controller has no data???
I've updated the orginal post to show the answer provided by Telerik, also my problem with the rest of the model was a silly missing : lol