2009-08-03 7 views

Trả lời

4

tôi đã không cố gắng xem trước 1 được nêu ra nhưng họ đã làm những gì bạn đang yêu cầu trong channel9 này video:

http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-ASPNET-MVC-2-Preview-1-with-Phil-Haack-and-Virtual-Scott/

Họ làm cả hai DisplayFor và EditorFor, bắt đầu khoảng 2 phút .

--Chỉnh sửa--

Đối với loại giá trị tức là tôi có thể làm cho nó hoạt động theo cùng một cách.

Tạo một mô hình để vượt qua quan điểm của tôi:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     HomeModel model = new HomeModel(); 
     model.message = "Welcome to ASP.NET MVC!"; 
     model.number = 526562262; 
     model.Date = DateTime.Now; 

     return View(model); 
    } 
} 

public class HomeModel 
{ 
    public string message { get; set; } 

    public int number { get; set; } 

    public DateTime Date { get; set; } 
} 

liên kết nhằm mô hình bằng cách sử dụng mẫu logic mới:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<HomeModel>" %> 

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server"> 
<p> 
    <% Html.EditorFor(c => c.message); %> 
</p> 
<p> 
    <% Html.EditorFor(c => c.number); %> 
</p> 
<p> 
    <% Html.EditorFor(c => c.Date); %> 
</p> 

Sau đó tạo một mẫu cho mỗi các loại ví dụ Int32:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
Editor For My Int32: <%= Html.TextBox("abc", Model.ToString())%> 

tôi đặt này trong Views \ Shared \ EditorTemplates \ Int32.ascx

+0

Video hiển thị việc tạo mẫu trình chỉnh sửa dựa trên loại tham chiếu (chuỗi) không phải là loại giá trị. –

+0

dean: Tôi đã cải thiện câu trả lời của mình, nhưng tôi chỉ nhận thấy trong ghi chú phát hành có một vấn đề đã biết với các loại giá trị. Nó dường như làm việc cho tôi ở trên vì vậy không chắc chắn những gì có liên quan đến. –

+0

Cảm ơn Nick, tôi đã tuyên bố loại giá trị trong tuyên bố Trang của tôi, ví dụ: Inherits = "System.Web.Mvc.ViewUserControl " loại bỏ điều này giải quyết vấn đề theo ví dụ của bạn. Cảm ơn tất cả sự giúp đỡ của bạn –

15

việc trả lời Will Nick Clarke khi bạn gửi các giá trị trên postback?

Trong bản xem trước MVC2 2, gọi Html.Textbox ("abc", Model.ToString()) sẽ hiển thị hộp văn bản có ".abc" được thêm vào tên, ví dụ:

<input id="StartDate_abc" name="StartDate.abc" type="text" value="02 Feb 09" /> 

điều này sẽ gây ra sự cố khi bạn đăng lại và cố gắng UpdateModel().

tôi đã làm một mẫu biên tập viên cho một DateTime, các công việc sau cho tôi:

/Views/Shared/EditorTemplates/DateTime.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %> 
<%= Html.TextBox(String.Empty, Model.ToString("dd MMM yy")) %> 

hay, sử dụng DatePicker jQuery cho tất cả các bạn DateTimes thêm một tham chiếu đến jQuery và jQueryUI vào Masterpage của bạn hoặc vào View có chứa lời gọi tới EditorFor.

/Views/Shared/EditorTemplates/DateTime.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %> 
<%= Html.TextBox("", Model.ToString("dd MMM yy")) %> 
<script type="text/javascript"> 
    $("#<%= ViewData.ModelMetadata.PropertyName %>").datepicker({ dateFormat: 'dd M y' }); 
</script> 

Cập nhật: ASP.NET MVC3, sử dụng cú pháp Razor:

@model System.DateTime 
@Html.TextBox("", Model.ToString("dd MMM yy")) 
<script type="text/javascript"> 
    $("#@ViewData.ModelMetadata.PropertyName").datepicker({ dateFormat: 'dd M y' }); 
</script> 

Và để sử dụng nó mọi thứ bạn cần trong Xem của bạn là:

@Html.EditorFor(model => model.DueDate) 

-Matt

2

Tôi đã viết a blog post về cách làm điều này bằng cách tạo mẫu có thể sử dụng lại trong MVC 2.

Bài đăng của tôi cũng giải thích mối quan hệ giữa TemplateInfo và mẫu.

1

Tôi đã tìm thấy số blog của Brad Wilson để có các ví dụ và giải thích tốt nhất. Part-3 của loạt bài nói riêng về các loại giá trị (Chuỗi, thập phân, Int32).

Tận hưởng!