2014-01-29 2 views
0

Приносим извинения, если этот вопрос задавали раньше, но я разрабатываю User Control с помощью Gridview. (причина, по которой я делаю это, - это то, что я хочу повторно использовать элемент управления на разных страницах своего приложения).ASP.NET 4.5 - Modelbinding для управления пользователями с помощью Gridview

Я хочу использовать modelbinding на этом Gridview, но когда я пытаюсь включить его, он не работает. Это дает мне следующие ошибки, когда я пытаюсь скомпилировать:

'IsValid' is not a member of 'System.Web.ModelBinding.ModelState'.

'AddModelError' is not a member of 'System.Web.ModelBinding.ModelState'.

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="test.ascx.vb" Inherits="Octoplus.test" %> 
<asp:GridView ID="GridView1" runat="server" ItemType="Octoplus.OrderHeader" UpdateMethod="GridView1_UpdateItem"> 

Imports System.Web.ModelBinding 
Inherits System.Web.UI.UserControl 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

End Sub 

' The id parameter name should match the DataKeyNames value set on the control 
Public Sub GridView1_UpdateItem(ByVal id As Integer) 
    Dim item As Octoplus.OrderHeader = Nothing 
    ' Load the item here, e.g. item = MyDataLayer.Find(id) 
    If item Is Nothing Then 
     ' The item wasn't found 
     ModelState.AddModelError("", String.Format("Item with id {0} was not found", id)) 
     Return 
    End If 
    TryUpdateModel(item) 
    If ModelState.IsValid Then 
     ' Save changes here, e.g. MyDataLayer.SaveChanges() 

    End If 
End Sub 

Кто-нибудь есть идеи?

Заранее спасибо.

ответ

0

ModelState класс в пространстве имен System.Web.ModelBinding просто не обладает такими свойствами, как IsValid или AddModelError ...

Вы можете прочитать о доступных свойствах и методах этого класса here.

Ваша проблема заключается в том, что вы пытаетесь использовать ModelState от System.Web.Mvc в приложении ASP.NET WebForms.

ModelState из System.Web.Mvc имен (применимо для проектов ASP.NET MVC) действительно имеет свойство IsValid и AddModelError, которые вы можете прочитать о here.

+0

Большое спасибо за ваш андерсер. – SoroTrestal

+0

Странно, однако, когда я просто создаю пустой Webform с Gridview и включаю Modelbinding в этот элемент управления, он не дает мне ошибку. Я заметил, что ModelState затем происходит из пространства имен: System.Web.Modelbinding.ModelstateDictionary. – SoroTrestal

1

Вы получаете эту ошибку, потому что ModelState не является членом UserControl, а страницы. Поэтому вам нужно использовать свойство страницы из UserControl для доступа к значению ModelState:

If Page.ModelState.IsValid Then 
    ' Save changes here, e.g. MyDataLayer.SaveChanges() 
End If 
Смежные вопросы