Làm thế nào để bạn buộc Visual Studio tạo lại các tệp .designer cho các tệp aspx / ascx?


395

Đôi khi, khi tôi chỉnh sửa trang hoặc kiểm soát các tệp .designer sẽ không được cập nhật với các điều khiển mới mà tôi đang đặt trên trang. Tôi không chắc điều gì đã xảy ra, nhưng tôi tự hỏi liệu có cách nào buộc Visual Studio tạo lại tệp .designer không. Tôi đang sử dụng Visual Studio 2008

EDIT: Xin lỗi tôi nên lưu ý rằng tôi đã thử:

  • Đóng và mở lại tất cả các tệp & Visual Studio
  • Thay đổi điều khiển runat = "server" trên trang
  • Xóa và thêm lại chỉ thị trang

57
Thật nực cười khi năm 2012 Visual Studio vẫn không có mục menu ngữ cảnh để tạo lại các tệp thiết kế từ các tệp nguồn? Nó giống như không thể xây dựng lại một DLL bị hỏng. Tôi không hiểu điều đó .. Đặc biệt với kiểm soát nguồn bên ngoài và các biên tập viên bên ngoài, bạn sẽ khiến Visual Studio bị tê liệt. Lãng phí tiền, nếu bạn hỏi tôi. Tôi thực sự đang cố gắng để tạo lại các nhà thiết kế tập tin tài nguyên. Tôi đã quản lý để chỉnh sửa nó, nhưng nó đã bị che khuất ... Augh !!! 1
bambams

3
@bamccaig, nếu tôi có một xu cho mỗi "tính năng" kỳ lạ như thế này, tôi sẽ giàu hơn Bill Gates. Nếu bạn nghĩ rằng điều này là xấu, hãy xem nơi Outlook Express lưu trữ dữ liệu thư của nó. Nó được chôn sâu trong thư mục người dùng dưới tên thư mục khó hiểu được ẩn theo mặc định.
ATL_DEV

13
Có giải pháp nào cho VS 2015 không?
Anton

Xem stackoverflow.com/questions/6508252/ cho các lần thử khác.
tạm biệt

2
Không phải là sửa lỗi vĩnh viễn nhưng điều này khôi phục các tham chiếu điều khiển trong tệp .cs: 1. Mở tệp .aspx có liên quan; 2. Xóa ">" ở cuối <%@ Pagedòng lệnh; 3. Đợi một hoặc hai giây; 4. Đặt lại ">". 5. Chuyển sang tệp .cs và bạn sẽ thấy nó hiện không có lỗi tham chiếu kiểm soát. Tôi đã làm điều này từ lâu rồi, hoạt động mọi lúc, trong mọi phiên bản VS.
thành

Câu trả lời:


368

Nếu bạn mở tệp .aspx và chuyển đổi giữa chế độ xem thiết kế và chế độ xem html và quay lại, nó sẽ nhắc VS kiểm tra các điều khiển và thêm bất kỳ tệp nào bị thiếu vào tệp thiết kế.

Trong VS2013-15 có một Convert to Web Application trong menu Project . Trước VS2013, tùy chọn này đã có sẵn trong menu ngữ cảnh nhấp chuột phải cho các tệp dưới dạng (c / p) x. Khi điều này được thực hiện, bạn sẽ thấy rằng bây giờ bạn đã có tệp * .Designer.cs và các điều khiển của bạn trong Design HTML sẽ có sẵn cho điều khiển của bạn.

PS: Điều này không nên được thực hiện trong chế độ gỡ lỗi, vì không phải mọi thứ đều được "biên dịch lại" khi gỡ lỗi.

Một số người cũng đã báo cáo thành công bằng cách (tạo bản sao lưu tệp .designer.cs của bạn và sau đó) xóa tệp .designer.cs. Tạo lại một tập tin trống có cùng tên.

Có nhiều bình luận cho câu trả lời này có thêm lời khuyên về cách tốt nhất để tạo lại tệp designer.cs.


1
Điều này chỉ hiệu quả với tôi sau khi đóng tất cả các trường hợp (ngay cả những trường hợp có giải pháp hoàn toàn khác nhau) của VS2008
Kevin

11
Tôi thấy rằng việc thay đổi từ chế độ gỡ lỗi sang chế độ phát hành, hãy đào mánh cho tôi, Cảm ơn
Chris

5
Chỉ muốn nói rằng tôi đã có cùng một lỗi và đã thử mọi thứ trên trang này, không có gì hoạt động. Hóa ra tôi đang thiếu một thẻ đóng ">" trên div có runat = "server". Chạy VS-2008.
Ber53rker

10
Để làm cho "Chuyển đổi sang ứng dụng web" xuất hiện, trước tiên, bạn cần xóa tệp Designer.cs B RNG PHẢI NHẤP VÀO tệp aspx trong Solution Explorer và chọn xóa. Điều này làm việc cho tôi trong VS 2010
DeveloperDan

43
VS2013 có ứng dụng Chuyển đổi thành ứng dụng web trong menu Project. Chỉ không còn trong menu ngữ cảnh.
Dennis Burton

95

Vâng, tôi đã tìm thấy một giải pháp hiệu quả, mặc dù tôi không thực sự thích nó. Tôi đã phải xóa tệp .designer.cs sau đó tạo lại một tệp trống có cùng tên. Khi tôi quay lại và lưu tệp aspx một lần nữa, tệp thiết kế đã được tạo lại.

Tinh ranh!


3
Điều này chỉ làm việc cho tôi quá. Không lý tưởng. Không có lý do tại sao các tập tin desginer ban đầu ngừng cập nhật đúng.
Người giữ Iain

3
Điều này đã không làm việc cho tôi. Bây giờ tôi có một tệp trống và tất cả các mã phía sau không hoạt động !!! Khởi động lại ...
EatPhilanderer 19/03/2016

7
Điều này làm việc cho tôi. Tôi chắc chắn xóa bản gốc, tạo một tệp designer.cs mới có cùng tên, đóng tệp mới, sửa đổi tệp .as (p / c) x một chút để buộc lưu, tất cả đều tốt.
TJB

9
nếu bạn gặp lỗi biên dịch xem, nó sẽ không quay trở lại. Nói chung đó là lý do tại sao nó dừng lại ở nơi đầu tiên. Bạn cần bật chế độ xem biên dịch để xem nó, điều này không đơn giản.
DevelopChris

1
Tôi cũng phải bao gồm các tập tin trống trong dự án của tôi.
JP Hellemons

78

Tôi sử dụng phương pháp sau đây hoạt động mọi lúc:

  • Chọn tất cả mã phía trước (đánh dấu html, v.v.) trong trình chỉnh sửa tệp aspx / ascx.
  • Cắt.
  • Tiết kiệm.
  • Dán.
  • Tiết kiệm.

Biên dịch lại.


1
Tôi nghĩ rằng chỉ cần xóa một điều khiển duy nhất và thêm lại nó cũng có tác dụng tương tự.
chris

Tôi đã làm điều này và nó làm việc cho tôi. Tuy nhiên, tôi đã phải tạo một tập tin trống được gọi <name>.aspx.designer.vbđể làm cho nó hoạt động
Tahir Hassan

64

Gần đây tôi thấy rằng tôi đã có cùng một vấn đề. Visual Studio 2010 đã từ chối cập nhật tập tin thiết kế.

Hóa ra, VS không sửa đổi tệp thiết kế cho một trang sử dụng CodeFile (hết trang) thay vì CodeBehind (DLL). Điều này đúng cho dù bạn đóng VS bao nhiêu lần, tải lại dự án, tạo lại (các) điều khiển hoặc sửa đổi tệp. Không có gì có thể nhắc VS để tái tạo nhà thiết kế. Như thể nó không tạo tệp thiết kế cho các trang CodeFile nhưng yêu cầu nó phải ở đó.

Tôi đã thay đổi nó thành CodeBehind và lưu trang. Các tập tin thiết kế cập nhật ngay lập tức. Sau đó, tôi chỉ thay đổi nó trở lại và mọi thứ vẫn còn vàng. Hành vi này dường như là mới đối với VS 2010 / .NET 4.0 vì VS 2008 theo mặc định không gặp phải vấn đề này.

Đây là phần này:

<%@ Page Language="vb" AutoEventWireup="false" CodeFile="YourPage.aspx.vb" Inherits="YourPageClass" %>

Thay đổi CodeFile thành CodeBehind, lưu và sau đó hoàn nguyên.


Muộn đến chủ đề này. Không có câu trả lời nào được mô tả ở trên buộc các điều khiển được liệt kê trong * .aspx.designer.cs. Tôi đã hy vọng điều này sẽ xảy ra, nhưng nó vẫn không buộc các điều khiển được khai báo trong tệp * .aspx.designer.cs. Tôi đang sử dụng VS 2010 Pro SP1. Tôi đang cố gắng để điều này hoạt động với bất kỳ tệp mặc định nào mà IDE tạo trong / Tài khoản như ChangePassword.aspx. Cảm ơn.
paparush

1
Của tôi được đặt thành CodeFile, tôi đổi thành CodeBehind, được lưu, trở lại CodeFile, được lưu, mọi thứ đều là Vàng. Những lần thử trước đó đã không làm điều đó cho tôi. VS 2010 Pro
Dan

37

Có một khả năng khác: Bạn có thể gặp lỗi trong tệp .aspx không cho phép Visual Studio tạo lại trình thiết kế.

Nếu bạn chuyển sang Dạng xem thiết kế, nó sẽ hiển thị điều khiển là không thể hiển thị. Sửa lỗi điều khiển (trong trường hợp của tôi, đó là một trích dẫn thêm trong các thuộc tính) và biên dịch lại sẽ tạo lại trình thiết kế.


Tôi gặp vấn đề tương tự, điều khiển người dùng có lỗi nên các trang sử dụng điều khiển người dùng có lỗi không liên quan vì lỗi trong điều khiển người dùng.
Ronen Festinger

1
Nguyên nhân tương tự. Tôi đã có một thuộc tính không được hỗ trợ có thể nhìn thấy = "false" được thêm vào nút asp. Tôi đã gỡ bỏ nó và mã thiết kế đã được tạo lại.
chingNotCHing

21

Hầu hết các giải pháp ở đây không hoạt động nếu bạn đang chạy Visual Studio 2013 và có thể 2012. Microsoft có thể đã giới thiệu một số tối ưu hóa để làm cho IDE trở nên nhanh hơn, do đó họ đã giảm số lượng các trường hợp kích hoạt trình tạo mã. Các tình huống sau đây được sử dụng để làm việc không còn làm:

  1. Xóa tệp aspx hoặc ascx - Không còn kiểm tra cho trường hợp này
  2. Cắt tất cả nội dung và chỉnh sửa lại thành tệp aspx hoặc ascx - Không còn hoạt động, không thay đổi trong tài liệu tham khảo
  3. Chuyển đổi sang ứng dụng web - Tùy chọn không còn khả dụng
  4. Thay đổi nội dung một cách tùy tiện trên tệp aspx / ascx - Không còn hoạt động (xem 2).

Giải pháp đơn giản đến bất ngờ, nhưng nó hơi cồng kềnh. Để kích hoạt trình tạo mã, hãy thay đổi thứ gì đó yêu cầu trình thiết kế.aspx.cs được tạo. Thay đổi nội dung không ảnh hưởng đến mã, chẳng hạn như kiểu CSS hoặc thêm văn bản, sẽ không kích hoạt trình tạo mã. Bạn phải thay đổi một điều khiển tham chiếu. Đây là cách thực hiện:

Trong ascx hoặc aspx thay đổi ID của điều khiển

<asp:HyperLink ID="MyLink" runat="server" NavigateUrl="~/Default.aspx" Text="Home" />

đến

<asp:HyperLink ID="theLINK" runat="server" NavigateUrl="~/Default.aspx" CssClass="tab" Text="Home" />

Truy cập ascx.cs hoặc aspx.cs và đảm bảo bạn cũng đổi tên tất cả các tham chiếu thành "MyLink" thành "theLINK". Lưu và làm xây dựng và bạn nên đi tốt.


Điểm rất tốt về những thay đổi trong phiên bản mới hơn của Visual Studio. Điều làm việc cho tôi thay vì gây rối với ID như trên, là xóa tệp thiết kế, sau đó thêm một điều khiển hoàn toàn mới, lành tính như <asp: PlaceHolder ID = "Foo" runat = "server /> và sau đó lưu để kích hoạt tái sinh. Sau đó, ngay cả khi bạn quên loại bỏ nó, không có gì bị ảnh hưởng.
Jordan Rieger

8
3. 'Chuyển đổi sang ứng dụng web' được cung cấp trong menu 'DỰ ÁN' nếu chọn một tệp thích hợp.
WynandB

2
Hừm. Thật không may, tùy chọn này không khả dụng nếu nó đã là một ứng dụng web.
ATL_DEV

Một thay đổi nhanh chóng là chỉnh sửa phần không gian tên của thuộc tính Kế thừa =. Điều này sẽ chỉnh sửa không gian tên trong tệp .designer và tạo lại tất cả nội dung bên trong. Tôi vừa thử điều này với VS2013.3.
David Russell

Xin chào, tôi thường thử với cách bạn cung cấp nhưng vấn đề là người dùng khác không thể tạo tệp g.cs trong khi chỉ quản trị viên mới có thể làm được. Chúng tôi đang sử dụng TFS, với việc sử dụng một số id người dùng của nhà phát triển trong VS, chúng tôi có thể tạo g.cs. Các quyền cần thiết để tạo g.cs trên máy chủ, TFS & SP là gì?
nirav

14

cách duy nhất tôi biết là xóa tệp thiết kế và thực hiện chuyển đổi sang ứng dụng web. Tuy nhiên, khi bạn làm điều này, nó thường xuất hiện lỗi, vì lý do tại sao nó không tự động lấy lại ở vị trí đầu tiên, nó thường là một tham chiếu điều khiển không được khai báo ở đầu trang.


Xin lỗi, nó không hoạt động, nó hoạt động trong VS 2008 cho tôi kể từ khi tôi bắt đầu sử dụng nó. Có một lỗi cú pháp trong trang của bạn? Bạn sẽ nhận được một hộp thoại cho bạn biết những gì cần khắc phục để hoàn thành nó hoạt động.
DevelopChris

Điều này làm việc cho tôi. Lớp mã phía sau có một thuộc int Idtính được biên dịch tốt trong C # vì nó phân biệt chữ hoa chữ thường. Nhưng ID="ControlName"trong trang aspx đã cố gắng làm Id = "ControlName". Convert to Web Appnói một cái gì đó như ControlName cannot be converted to Int32.
Nelson Rothermel

9

Chuyển đổi sang Ứng dụng web không hoạt động đối với tôi.

Xóa designer.cs và dán một designer.cs trống cũng không hoạt động.

Nhưng vâng, điều này đã làm việc:

  1. Chọn tất cả (Default.aspx)
  2. Cắt
  3. Lưu mặc định.aspx
  4. Dán
  5. Lưu mặc định.aspx

Làm xong. Designer.cs mới được tạo. :)


Tôi có thể xác nhận rằng điều này hoạt động trong VS2013, tôi chỉ cần làm điều đó và nó đã giải quyết vấn đề của tôi.
ToastyMallows

Bạn. có. có. đến. là. đùa thôi tôi. Điều này làm việc cho tôi trong VS2015, khi chuyển đổi như trong câu trả lời được chọn thì không.
GraehamF

6

Tôi thường thấy rằng sao chép / dán gây ra hành vi này cho tôi. Hầu hết các trường hợp có thể được giải quyết bằng cách chỉnh sửa ID của điều khiển máy chủ (chỉ cần thêm một ký tự, sau đó xóa nó).

Ngoài ra, hãy nhớ rằng kiểm soát bên trong những thứ như Repeater không hiển thị trong tệp thiết kế.

Và vâng, có những trường hợp bạn cần thực hiện phép thuật xóa tệp được liệt kê ở trên - nhưng giải pháp thay đổi tên sẽ hoạt động hầu hết thời gian.


2
Đó là loại lỗi mà tôi có nhiều lần. Nếu bạn sao chép HTML từ trang này sang trang khác và có các điều khiển với runat = "server", các điều khiển sẽ được đổi tên để tránh xung đột. Tuy nhiên, nếu bạn dán bên trong thẻ "nhận xét html" <! - whaterver ->, id của điều khiển sẽ không bị thay đổi và bất kỳ xung đột nào cũng sẽ khiến tập tin thiết kế được tạo lại, bởi vì có hai điều khiển có cùng ID. Đó là bởi vì các điều khiển bên trong thẻ "bình luận" html cũng được tạo. ;)
tomasofen

5

Kinh nghiệm của tôi là nếu bạn muốn làm như thế này bài viết, như đã nêu ở trên.

Tệp đánh dấu của bạn (aspx / ascx) phải bao gồm thuộc tính CodeBehind = "MyPage.aspx.cs" nếu không nó sẽ giành được công việc. Tôi viết blog về nó ở đây .


Đã thêm thuộc tính này sau đó được lưu; không có gì. Sau đó loại bỏ các Kế thừa, lưu, khôi phục và voila tệp mã thiết kế đã được cập nhật! Tính năng thú vị này thu hút tôi mọi lúc :-(
GlennG

cả hai liên kết đều đã chết = (
Maslow

5

Tôi đã tìm ra cách giải quyết vấn đề này mà không cần thay đổi bất kỳ mã nào hoặc chạy các lệnh như "Chuyển đổi sang ứng dụng web" - và nó cũng đơn giản!

Những gì tôi tìm thấy là khởi động lại Visual Studio thường giải quyết vấn đề, nhưng đôi khi không. Trong những trường hợp đó, nếu bạn đóng Visual Studio và sau đó xóa tất cả nội dung trong thư mục "obj" cho dự án web trước khi bạn mở lại, nó luôn hoạt động với tôi.

(khi bắt đầu lại, bạn chỉ cần thêm một khoảng trắng và xóa nó một lần nữa và sau đó nhấn lưu để tập tin thiết kế được tái tạo đúng cách)


Tôi đã gặp vấn đề này với một ứng dụng cũ mà tôi được giao trách nhiệm hỗ trợ. Tôi muốn nói cảm ơn bạn đã chỉ ra điều này. Tôi không được phép chuyển đổi sang ứng dụng web ", tạo ra một giải pháp mới hoặc làm bất cứ điều gì ngoại trừ sửa lỗi. Nhà thiết kế sẽ gặp sự cố, liên tục, đối với tôi. Nhưng điều này đã giúp cho đến nay.
Jamie Taylor

4

(Sau đây là từ kinh nghiệm với VS2005.)

Nếu bạn chỉnh sửa một trang ASPX trong khi gỡ lỗi, thì bộ mã sẽ không được cập nhật với các lớp mới. Vì vậy, bạn phải dừng gỡ lỗi, chỉnh sửa trang ASPX một cách tầm thường (như thêm nút hoặc một cái gì đó), sau đó nhấp vào Dạng xem thiết kế, sau đó xóa nút. Sau đó, các tập tin thiết kế của bạn nên được cập nhật.

Nếu bạn gặp vấn đề khác với VS2008, thì tôi không thể giúp được.


Chạy theo điều này với VS.Net 2010 ... phải thực hiện chính xác điều này ... Cảm ơn @EndangeredMassa vì tiền boa ... Tôi đã từng trải qua điều này trong VS.Net 2002/2003 cũng ... Ước gì tôi đã biết điều này rồi;)
Richard B

4

Khi bạn đang ở chế độ xem thiết kế, nhấp chuột phải vào màn hình và nhấn refresh.


3

Một điều khác làm việc là -

  1. Xóa thủ công & sau đó Tạo tệp thiết kế trong hệ thống tệp.
  2. Chỉnh sửa dự án tập tin .
  3. Thêm mã để bao gồm nhà thiết kế
    Eg:<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  4. Tải lại dự án
  5. Mở dưới dạng tệp (c / p) x trong chế độ thiết kế / xem và lưu nó.
  6. Kiểm tra tập tin thiết kế. Mã sẽ ở đó.

3

Nếu bạn đang sử dụng VS2013 trở lên, hãy đảm bảo rằng mã được tham chiếu với thuộc tính "CodeBehind" chứ không phải "CodeFile", sau đó thực hiện các bước dưới đây

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %>
  • tạo trang thiết kế trống (hoặc xóa nó nếu nó đã tồn tại "yourControl.ascx.designer.cs")
  • trong ascx (hoặc aspx) sao chép tất cả mã, xóa nó, sau đó lưu lại. lại quá khứ một lần nữa, sau đó lưu lại.
  • các tập tin thiết kế nên được điền ngay bây giờ.

2
  • Chọn tất cả trong tệp thiết kế và xóa mọi thứ trong tệp, để trống và sau đó lưu
  • Chọn tất cả trong tệp ASPX / ASCX và cắt mọi thứ và sau đó dán lại
  • Các tập tin thiết kế nên đã tạo lại mã

1
Điều này làm việc cho tôi! Tôi cũng đã lưu tệp .aspx sau khi cắt mọi thứ. Dán lại, lưu và tệp thiết kế (trước đây trống) của tôi đã được điền đầy đủ.
DaveD

2

Đây là kinh nghiệm tôi đã chọn, Chọn thư mục trang web nhấp chuột phải vào Solution Explorer, chọn Chuyển đổi sang ứng dụng Web cho tất cả tệp aspx mà tệp thiết kế sẽ được tạo.

Tương tự


2

Chỉ cần thêm vào danh sách dài các câu trả lời ở đây - Tôi vừa gặp vấn đề này trong VS2010 (SP1) với tệp .aspx. Tôi đã thử thêm và xóa các điều khiển ASP tiêu chuẩn (đã hoạt động trong quá khứ) nhưng cuối cùng, tôi phải xóa một trong các dòng máy chủ runat = khỏi điều khiển hiện có (và lưu) để buộc tệp thiết kế phải tạo lại.


2

Tôi đã gặp vấn đề tương tự trong nhiều năm nay, làm việc trong Visual Studio 2008. Và tôi đã thử mọi "giải pháp" trên StackOverflow và hàng tá blog, giống như tôi chắc chắn rằng tất cả các bạn đều có. Và đôi khi họ làm việc, và đôi khi họ không, giống như tôi chắc chắn rằng tất cả các bạn đã gặp phải. Và rõ ràng nó vẫn là một vấn đề trong VS2010 và VS2012.

Vì vậy, cuối cùng, một vài tháng trước, tôi đã quyết định là đủ, và trong vài tuần tôi đã xây dựng một công cụ gọi là "Redesigner" để tạo các tệp .designer. Đó là nguồn mở theo giấy phép BSD , với mã nguồn có sẵn trên SourceForge - miễn phí sử dụng, miễn phí ăn cắp, miễn phí để làm bất cứ điều gì bạn muốn. Và nó thực hiện những gì Visual Studio không thực hiện thường xuyên, đó là tạo các tệp .designer một cách nhanh chóng và đáng tin cậy.

Đây là một công cụ dòng lệnh độc lập phân tích các tệp .aspx và .ascx, thực hiện tất cả các phép thuật phản chiếu cần thiết và tạo ra các tệp .designer chính xác. Nó thực hiện tất cả các phân tích cú pháp và phản xạ để tránh dựa vào mã hiện có, mà tất cả chúng ta đều biết quá rõ đã bị phá vỡ. Nó được viết bằng C # so với .NET 3.5, nhưng thật khó để tránh sử dụng ngay cả System.Web cho bất kỳ thứ gì ngoài khai báo kiểu và hoàn toàn không sử dụng hoặc dựa vào Visual Studio .

Redesigner có thể tạo các tệp .designer mới; và nó cung cấp tùy chọn --verbose để khi có sự cố xảy ra, bạn sẽ nhận được thông báo lỗi tốt hơn nhiều so với "Ngoại lệ của loại System.Exception đã bị ném". Và có một tùy chọn --verify có thể được sử dụng để cho bạn biết khi nào các tệp .designer hiện tại của bạn bị hỏng - điều khiển bị thiếu, khai báo thuộc tính xấu, không thể đọc được bởi Visual Studio, hoặc nói cách khác là đơn giản.

Chúng tôi đã sử dụng nó tại nơi làm việc của tôi để giúp chúng tôi thoát khỏi tình trạng ùn tắc vì phần tốt hơn của tháng trước và trong khi Redesigner vẫn là bản beta, điều đó đủ để chia sẻ sự tồn tại của nó với công chúng. Tôi sớm có ý định tạo một plugin Visual Studio cho nó để bạn có thể chỉ cần nhấp chuột phải để xác minh hoặc tạo lại các tệp thiết kế theo cách bạn luôn mong muốn. Nhưng trong thời gian tạm thời, việc sử dụng dòng lệnh khá dễ dàng và sẽ giúp bạn tiết kiệm rất nhiều vấn đề đau đầu.

Dù sao, hãy tải xuống một bản sao của Redesigner ngay bây giờ và ngừng nhổ tóc của bạn . Bạn sẽ không luôn cần nó, nhưng khi bạn làm thế, bạn sẽ rất vui vì bạn có nó!

https://sourceforge.net/projects/redesigner/


có vẻ như quá mức cần thiết cho một sửa chữa đơn giản
Chris McGrath

1
@ChrisMcGrath Có thể quá mức cần thiết, nhưng tôi đã cảm thấy nỗi đau đã thúc đẩy công cụ này. Tôi ngưỡng mộ sự cống hiến của anh ấy để dành thời gian để xây dựng nó :)
Jordan Rieger

2

TL; DR;
Chỉnh sửa Inheritsthuộc tính của @Pagechỉ thị của trang ASPX và nhấn Save. Tập tin thiết kế của bạn nên được tạo lại.

Đảm bảo rằng Inherits= <không gian tên>. <Class_name> và CodeBehind= <class_name> .aspx.cs


Tôi đã cố gắng thực hiện điều này trong một dự án Sharepoint 2010, sử dụng VS 2010 và TFS , và không có giải pháp nào ở trên làm việc cho tôi. Về cơ bản, tùy chọn "Chuyển đổi sang ứng dụng web" bị thiếu trong menu chuột phải của tệp .ASPX khi sử dụng TFS trong VS 2010.

Câu trả lời này cuối cùng đã giúp . Lớp tôi trông như thế này:

namespace MyProjects.Finance.Pages
{
    public partial class FinanceSubmission : WebPartPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        // more code
    }
}

@Pagechỉ thị của tôi là (ngắt dòng ở đây cho rõ ràng):

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="FinanceSubmission.aspx.cs"
    Inherits="MyProjects.Finance.Pages.FinanceSubmission"
    MasterPageFile="~masterurl/default.master" %>

Trước tiên tôi đã thay đổi Inheritsthành MyProjects.Finance.Pages , nhấn Save, sau đó đổi lại thành MyProjects.Finance.Pages.FinanceSubmission và nhấn Save lần nữa. Và wallah! Trang thiết kế đã được tạo lại!

Hy vọng điều này sẽ giúp ai đó sử dụng TFS!


2

Trong Visual Studio:

1) Xóa tệp aspx.designer.cs của bạn

2) Nhấp chuột phải vào tệp aspx của bạn và chọn "Chuyển đổi sang ứng dụng web" Điều này sẽ thêm aspx.designer.cs trở lại và cập nhật.

Nếu bạn gặp lỗi nói:

"Tạo tệp thiết kế không thành công: Phương thức hoặc thao tác không được thực hiện."

Hãy thử đóng Visual Studio và sau đó mở lại dự án của bạn và thực hiện lại bước số hai

Làm cách nào để tạo aspx.designer.cs trong studio trực quan?


2
"Chuyển đổi sang ứng dụng web" không tồn tại trên menu ngữ cảnh của tệp aspx. Ít nhất, nó không có trong VS Professional 2015.
Chris Walsh

2
  1. Bước 1 : Chọn tất cả mã aspx của bạn, Cắt [CTRL + X] mã đó và Lưu.

  2. Bước 2 : Một lần nữa dán cùng mã vào cùng một trang và lưu lại

Bây giờ trang .desinger của bạn sẽ làm mới với tất cả các điều khiển trong trang .aspx.


1

Xóa tệp designer.cs và sau đó nhấp chuột phải vào tệp .aspx và chọn "Chuyển đổi sang ứng dụng web". Nếu có vấn đề với các khai báo kiểm soát của bạn, chẳng hạn như thẻ không được định dạng tốt, bạn sẽ nhận được thông báo lỗi và bạn sẽ cần sửa thẻ không đúng định dạng trước khi studio hình ảnh có thể tạo lại thành công tệp thiết kế của bạn.

Trong trường hợp của tôi, tại thời điểm này, tôi phát hiện ra rằng vấn đề là tôi đã khai báo một nút điều khiển không nằm trong thẻ biểu mẫu có thuộc tính runat = "server".


1

Đây là một lỗi trong IDE; Tôi đã nhìn thấy nó kể từ VS 2003. Mặc dù vậy, giải pháp này rất đơn giản.

Lưu các tập tin của bạn. Thoát hoàn toàn IDE (đảm bảo quá trình dừng lại, tác vụ mgr.)

Mở lại giải pháp, làm bẩn đánh dấu, lưu lại. Đã sửa.


1

Tôi gặp hai vấn đề ... AJAXControlkit đã lỗi thời - đã xóa dll cũ, xóa các điều khiển cũ khỏi hộp công cụ, tải xuống phiên bản mới, hộp công cụ được tải và kéo và thả các điều khiển mới trên trang (xem http://www.experts-exchange.com / Lập trình / Ngôn ngữ / .NET / Volual_Studio_.NET_2005 / Q_24591597.html )

Cũng có lỗi chính tả trong kiểm soát nhãn của tôi (đã sử dụng 'class' thay vì 'cssclass').

Ta


1

Tôi gặp vấn đề là các điều khiển mới của tôi sẽ không tạo trong tệp thiết kế khi được khai báo trong tệp .ascx. Vấn đề là tôi đã khai báo chúng trong mã phía sau. Vì vậy, xóa khai báo trong mã phía sau đã giải quyết vấn đề của tôi.


1

Nếu bạn giống như tôi và bạn thêm các tệp .ASPX cũ vào một dự án gần đây hơn. Bạn có thể sẽ quên một số điều khiển được sử dụng trên trang.

Nếu vậy, điều đầu tiên, nếu có nhiều tệp bạn đang cài đặt; Sửa từng cái một.

Khi bạn biên dịch, sửa lỗi được tạo. Chúng có thể sẽ có cùng một lỗi trong tất cả các tệp.

Tiếp theo, nếu bạn có tệp Designer, hãy xóa tất cả các tệp được thiết kế. Tiếp theo, đảm bảo không có bất kỳ lỗi nào khác khi bạn biên dịch, ngoài các tệp thiết kế.

Cuối cùng, nhấp chuột phải vào dự án web của bạn và nhấp vào Chuyển đổi sang Ứng dụng Web. Điều này sẽ chèn các tập tin thiết kế bạn cần.

Đây là những bước tuyệt đối tốt nhất để khắc phục các vấn đề.


1

Một điều mà không ai đề cập đến là truy cập trang . Tôi đã khiến tập tin thiết kế của mình ngừng phục hồi vì tôi đã bao gồm một điều khiển người dùng không tồn tại (vì nhiều lý do) và không có điều gì được đề xuất ở đây hoạt động. Vì bất kỳ lý do gì, tôi đã không gặp phải bất kỳ lỗi nào trong Visual Studio - bên cạnh đó là phàn nàn về thực tế rằng các điều khiển phía máy khách của tôi không tồn tại vì tất nhiên chúng không được tạo lại.

Nó thực sự đã truy cập trang để có được ASP.Net để cho tôi biết lỗi.


1

Điều này cũng có thể xảy ra nếu bạn cập nhật không gian tên và không cập nhật không gian tên trong tệp thiết kế. Khắc phục: Cập nhật không gian tên trong tệp thiết kế.


1

Giải pháp làm việc cho tôi là:

Tôi chỉ sao chép trang và dán nó vào cùng một phần, sau đó đổi tên trang đầu tiên (tên bao giờ) và đổi tên trang được sao chép thành trang gốc. Bây giờ các điều khiển có thể truy cập.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.