2010-12-08 9 views
0

_ViewStart.cshtmlセクションがまったく機能していません。あなたがいる場合は、以下の出力Razorテンプレートが機能しません。 _ViewStart.cshtmlの何かが間違っています

<input type="text" value="{ class = big-field, tabindex = 1 }" name="Chris" id="Chris"> 

//Edit.aspx

@model myproject.Web.Models.ViewModel.User.EditViewModel 

@{ 
    View.Title = "Edit Profile"; 
    Func<myproject.Web.Models.ViewModel.User.EditViewModel, HelperResult> lst = ViewContext.Controller.ViewData["CreateEditViewModelTemplate"] as Func<myproject.Web.Models.ViewModel.User.EditViewModel, HelperResult>;  
} 

@Html.ValidationSummary(true, "Please correct the errors and try again.") 
@using (Html.BeginForm()) { 

    @Html.HiddenFor(model => model.UserId) 
    @lst(Model) 


    <fieldset> 
     <input type="submit" class="right-button" value="Back to Profile List" style="margin: 5px 0 5px 0" , tabindex="7"/> 
     <input type="submit" class="right-button" value="Update Profile" name="confirmButton" , tabindex="6"/> 
    </fieldset> 
} 




using System.IO; 
using System.Web; 
using System.Web.Mvc; 

namespace myproject.Web.Core.Helpers 
{ 
    public abstract class ViewStartPageWithHelpers : ViewStartPage 
    { 
     public static void WriteLiteralTo(TextWriter writer, object content) 
     { 
      writer.Write(content); 
     } 
     public static void WriteTo(TextWriter writer, object content) 
     { 
      writer.Write(HttpUtility.HtmlEncode(content)); 
     } 
    } 

} 

* //_ViewStart.cshtml*

@using myproject.Web.Models.ViewModel.User; 
@using myproject.Web.Core.Helpers; 

@{ 
    Layout = "~/Areas/Admin/Views/Shared/_Layout.cshtml"; 
} 

@inherits ViewStartPageWithHelpers 
@{ 
    Func<CreateViewModel, HelperResult> h = 
    @<fieldset> 
     <legend>Contact Information</legend> 
     <div> 
      @{<table class="form-spacing">      
       <tr> 
        <td class="cell-one">* @Html.Label(item.FirstName) :</td> 
        <td class="cell-two">@Html.TextBox(item.FirstName, new { @class = "big-field", tabindex = "1" })</td> 
        <td class="cell-three" >@Html.ValidationMessage(item.FirstName)</td>    
       </tr> 
      </table>}; 
     </div> 
    </fieldset>; 

    ViewContext.Controller.ViewData["CreateEditViewModelTemplate"]=h; 
} 
+0

具体的にどのような問題がありますか?例外(スタックとは何ですか?)物事は実行されていないだけですか? – marcind

+0

全体のFieldSetを意味する全体のHTMLチャンクの代わりに、私が得ているものを出力してみてください。助けてください – Pirzada

+0

私は混乱しています...あなたは_viewstartが機能していないと言っていますが、あなたの出力には_viewstartヘルパーからの出力があります。 _viewstartで見ています。 –

答えて

1

ですwierd valを参照して事故で間違ったHtml.TextBoxオーバーロードを使用しているため、入力要素にその要素があります。

Html.TextBox(item.FirstName, item.FirstName, new {@class = "big-field", tabindex = "1" })

それともあなたが選ぶ過負荷に強いタイプを使用してみてください。

+0

はい、それは正しいです。それが問題だ。しかし、Html.LabelとHtml.ValidationMessageは機能しません。それを修正できますか? – Pirzada

+0

Html.LabelFor(x => x.FirstName)を使用すると、テキストボックスのラベルが自動的にワイヤリングされます。あなたのページの上部にHtml.ValidationMessage()が必要なだけで、コントローラからの検証エラーが返されるはずです(あるいはDataAnnotationsを使用している場合はモデリングしてください)。 –

関連する問題