6

値型、つまり int の MVC 2 エディター テンプレートを作成したいのですが、プレビュー 1 ビットでこれを行った人はいますか?

どうもありがとう

4

4 に答える 4

15

ポストバックで値を送信すると、Nick Clarke の回答は機能しますか?

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:

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

または、すべての DateTime に jQuery の DatePicker を使用するには、jQuery および jQueryUI への参照をマスターページまたは 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、Razor 構文を使用:

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

-マット

于 2009-10-10T23:34:08.337 に答える
4

私はまだプレビュー 1 を試していませんが、この channel9 ビデオであなたが求めていることを実行しました。

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

それらは DisplayFor と EditorFor の両方を実行し、約 2 分で開始します。

- 編集 -

値型、つまり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())%>

これを Views\Shared\EditorTemplates\Int32.ascx に入れました

于 2009-08-03T17:27:28.343 に答える
2

MVC2で再利用可能なテンプレートを作成してこれを行う方法についてのブログ投稿を書きました。

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

于 2010-04-26T15:48:35.580 に答える
1

Brad Wilson のブログには、最良の例と説明があることがわかりました。シリーズのパート 3 では、特に値の型 (String、decimal、Int32) について説明します。

楽しみ!

于 2011-10-12T12:28:32.540 に答える