2009-03-25 25 views
16

Tôi nhận thấy với phiên bản ASP.NET MVC mới nhất mà Chế độ xem không còn mặc định để có các lớp mã-đằng sau.cách thêm trang mã sau vào chế độ xem hoặc một phần

Tôi làm cách nào để thêm lớp mã phía sau vào Chế độ xem hoặc một phần?

+1

Cách thay đổi tiêu đề để đọc Cách thêm trang mã sau vào bất kỳ chế độ xem nào –

Trả lời

22

Làm thế nào để thêm một trang Mã-đằng sau để một phần Xem

Có vẻ đây không phải là đặc biệt khó khăn, và khá không-thể. Câu trả lời này làm việc cho một phần ViewUserControl nhưng giống nhau nên áp dụng cho một MVC Bình thường ViewPage cũng

  1. Thêm một tập tin Class mới với quy ước của <view filename & extention>.cs (tức view.ascx.cs)

  2. Thêm using System.Web.Mvc; đến lớp

  3. Thay đổi lớp thành Thừa kế từ ViewUserControl<>.
    ví dụ public class Foo:ViewUserControl

  4. Thêm dòng sau vào tiêu đề của Xem:

    CodeBehind="View.ascx.cs" Inherits="Project.Views.Shared.View"

  5. Sao chép các tập tin ra khỏi dung dịch và kéo lại vào liên kết lại hai với nhau. Điều này có thể không cần thiết trong VS 2010+ và MVC 2+.

Đối với điều này để làm việc với một bình thường MVC View, bạn chỉ cần kế thừa lớp từ "ViewPage"

+4

Cảm ơn điều đó. Tôi đã tìm thấy một cách nhanh hơn để liên kết hai tệp với nhau là nhấp chuột phải vào chúng, chọn Loại trừ khỏi Dự án, sau đó chọn 'Hiển thị Tất cả Tệp', nhấp chuột phải vào chúng và thêm lại chúng. – Andrew

+3

VS2010 liên kết chúng ngay khi bạn tạo lớp blah.ascx.cs (trong cùng thư mục với trang aspx). Tuyệt vời. – ashes999

4

Tôi không chắc chắn lý do tại sao bạn đang tạo một mã số đằng sau tập tin, nhưng nếu bạn thực sự thực sự làm, sau đó tôi sẽ xem xét sử dụng phương pháp chuẩn webforms thay thế.

Tôi cũng sẽ xem xét các khái niệm cơ bản của MVC để hiểu lý do tại sao không cần trang phía sau.

Another explanation

How to use ASP:Chart without a code-behind (Option B)

+1

Nó thực sự khá đơn giản. Tôi cần sử dụng mã phía sau để điền vào chuỗi Biểu đồ tôi đang sử dụng. Nó sẽ không cho phép tôi sử dụng một cách tiếp cận MVC bình thường. Đây là một thỏa hiệp thế giới thực, và nó hoạt động. –

+0

Trong trường hợp đó, dưới đây là cách bạn có thể sử dụng Biểu đồ mà không có mã sau: http://code-inside.de/blog-in/2008/11/27/howto-use-the-new-aspnet- biểu đồ-điều khiển-với-aspnet-mvc/ –

+0

Vì vậy, bạn đang nói với tôi bạn muốn có rất lộn xộn khó khăn để quản lý mã spaghetti trong html của bạn? Tôi nghĩ rằng việc sử dụng mã này rất hợp lệ. Nó không phải là logic điều khiển, nó không phải là mã trình bày. nó là sự chuẩn bị trình bày. –

2

Ok, tôi đã xác minh các giải pháp, đây là một cái gì đó mà bạn cần phải lưu ý:

CodeBehind = "View.ascx.cs" Inherits = "Project.Views .Shared.View "

Trong trường hợp của bạn, bạn cần phải thay đổi" Project.Views.Shared.View "dựa trên không gian tên và tên lớp của bạn và để truy cập điều khiển trong mã sau, bạn phải tự thêm khai báo trong đồng de-đằng sau. Trong trường hợp của tôi, tôi cần phải khởi sự kiểm soát gigaSoft proEssential:

public class gigaTest2 : ViewUserControl 
{ 
    protected global::Gigasoft.ProEssentials.PegoWeb PegoWeb1; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     // Set Titles 
     PegoWeb1.PeString.MainTitle = "Hello ASP.NET"; 
     PegoWeb1.PeString.SubTitle = ""; 

     // One simple way of passing data, data binding also possible. //' 
     PegoWeb1.PeData.Subsets = 1; 
     PegoWeb1.PeData.Points = 6; 
     PegoWeb1.PeData.Y[0, 0] = 10; 
     PegoWeb1.PeData.Y[0, 1] = 30; 
     PegoWeb1.PeData.Y[0, 2] = 20; 
     PegoWeb1.PeData.Y[0, 3] = 40; 
     PegoWeb1.PeData.Y[0, 4] = 30; 
     PegoWeb1.PeData.Y[0, 5] = 50; 

     // Set style of chart and a few other properties //' 
     PegoWeb1.PePlot.Method = Gigasoft.ProEssentials.Enums.GraphPlottingMethod.Bar; 
     PegoWeb1.PePlot.Option.GradientBars = 8; 
     PegoWeb1.PeFont.FontSize = Gigasoft.ProEssentials.Enums.FontSize.Large; 
    } 
1

Để thêm một tập tin codebehind trang aspx của bạn, trong khi vẫn cho phép nó trở thành mục tiêu của một cái nhìn MVC, làm như sau.

Đối với một trang xem tên Index.aspx ...

Thay thế đoạn mã sau ....

<%@ Page Inherits="System.Web.Mvc.ViewPage" %> 

với

<%@ Page CodeFile="Index.aspx.vb" Inherits="Home_Index" %> 

Sau đó, tạo ra một tập tin gọi là Index.aspx.cs (hoặc .vb).

partial class Home_Index : System.Web.Mvc.ViewPage 
{...} 

hoặc VB

Partial Class Home_Index 
    Inherits System.Web.Mvc.ViewPage 
    ... 
End Class 

Vậy là xong. Điều đặc biệt duy nhất là sử dụng đúng lớp cơ sở Mvc.ViewPage.

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