2009-08-03 9 views
6

値型、つまりintのMVC 2エディタテンプレートを作成したいのですが、プレビュー1ビットでこれを行った人はいますか?私はまだプレビュー1を試していないが、彼らはあなたがこのchannel9ビデオに求めているものをやった値型のASP.NET MVC 2エディタテンプレート、

感謝

答えて

4

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

彼らはDisplayForとEditorFor両方を行うには、約2分に開始します。値型の場合

--Edit--

すなわち、私はそれが同じように動作するように取得することができたint型。

私のビューに渡すモデルを作成します。新しいテンプレートのロジックを使用してモデルに

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; } 
} 

リンクビュー:

<%@ 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> 

をその後のそれぞれのためのテンプレートを作成しますタイプINT32:

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

私はビューでこれを置く\共有\ EditorTemplates \ Int32.ascx

+0

ビデオには、値タイプではなく参照タイプ(文字列)に基づいたエディタテンプレートの作成が示されます。 –

+0

ディーン:私は自分の答えを改善しましたが、リリースノートに値の種類に関する既知の問題があることに気がつきました。それは上に私のために働くように見えたので、それが何に関連しているかはわかりません。 –

+0

ありがとう、ニック、私は、ページの宣言で値の型を宣言していました。 Inherits = "System.Web.Mvc.ViewUserControl "これを削除すると、問題が解決します。あなたの助けをありがとう –

15
あなたがポストバックに値を送信

ウィルニック・クラークの答えの仕事?

MVC2プレビュー2では、Html.Textbox( "abc"、Model.ToString())を呼び出すと、 は名前に ".abc"というテキストを追加します。

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

これは、ポストバックしてUpdateModel()を実行しようとすると問題が発生します。

私は、DateTimeのためのエディタのテンプレート、私のために次のような作品をした:

/Views/Shared/EditorTemplates/DateTime.ascx:すべてのあなたのためのjQueryの日付ピッカーを使用する

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

または、 DateTimes jQueryおよびjQueryUIへの参照を、Masterページまたは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> 

更新:ASP。カミソリの構文を使用してNET MVC3、:

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

そして、あなたはあなたのビューで必要なすべてがある、それを使用します

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

-Matt

2

私が行う方法についてa blog postを書きましたこれはMVC 2で再利用可能なテンプレートを作成することで実現します。

私の投稿ではTemplateInfoとテンプレートの関係についても説明しています。

1

私は、Brad Wilsonのblogが最良の例と説明を得ていることを発見しました。シリーズのPart-3は具体的には値の型(String、decimal、Int32)に関するものです。

お楽しみください!

関連する問題