2014-06-06 15 views
11

Tôi có thể thực hiện việc này ở một lớp không?MVC: Tôi có thể sử dụng ModelState bên trong lớp ngoài bộ điều khiển không?

... 
    using System.Web.Mvc; 
    ... 

    public static class aaa 
    { 

     public static test() { 

     if (something) ModelState.AddModelError("", "test"); 
     } 

    } 

bên gọi controller:

...

public class mycontroler { 

    public void Index() { 
      .... 
      aaa.test(); 
      .... 
    } 

} 

là nó có thể? Tôi muốn kiểm soát mã bên trong một lớp trong một phần khác của bộ điều khiển.

Trả lời

15

Bạn có thể vượt qua tình trạng mô hình của bạn xung quanh như thế này:

public static void test(ModelStateDictionary ModelState) 
{ 
    if (something) ModelState.AddModelError("", "test"); 
} 

Và gọi từ bên trong điều khiển của bạn:

aaa.test(ModelState); 
+0

có nhưng shoud được ra khỏi từ điển hoặc ref, và trình biên dịch doesnt cho phép nó, phải không? – David

+0

@David Xin lỗi, tôi không hiểu bạn đang nói gì? – DavidG

+0

xin lỗi, tôi đã làm những gì bạn nói nhưng tôi phải chuyển tham số vì tham chiếu vì sẽ thay đổi bên trong hoặc tham số, thực hiện điều đó, trình biên dịch cho tôi lỗi không cho phép đặt tham số hoặc tham số trong tham số đối tượng – David

1

Không, bạn không thể. Nội dung bạn đang tham chiếu bên trong Bộ điều khiển là thuộc tính , không phải lớp học. Bạn vẫn có thể truyền nó cho phương thức được gọi là một đối số.

+1

tôi đã thêm các lỗi bên trong chuỗi và tôi sẽ nhận được thông báo trong điều khiển, sau khi nó nếu tin nhắn trống rỗng không có lỗi nếu không tôi sẽ thêm bằng cách sử dụng AddModelError bên trong bộ điều khiển. – David

Các vấn đề liên quan