2016-05-10 9 views
-1

私のアプリの誰でも@ Html.ContactModal(モデルとオプションはここにあります)でそれを使うことができるように私は連絡先モーダル用のカスタムHTMLヘルパーを作ったが、問題は、モーダルにはセールスコードの別のhtmlヘルパーがあり、カミソリが正しく描画されていないということです。私は部分的な見方ですべてをやってみましたが、コントローラを使ってhtmlヘルパーでパーシャルを使うことはできません(私はこれを初めて使っています...)。タグビルダーを使用していますが、タグビルダーを使用してフォーム全体を書き込む前に、ここで最初に質問したかったのです。htmlヘルパー内のHtmlヘルパー(文字列リテラルから正しくカミソリをレンダリング)

public static IHtmlString ContactModal(this HtmlHelper htmlHelper, ContactModalOptions options) 
    { 
     //required scripts 
     htmlHelper.AddScriptFile("~/Areas/Customers/Scripts/ContactModal/tmi.customers.contactModal.js"); 
     htmlHelper.AddScriptLine("$('#" + options.controlId + "').contactModal(" + options.ToJson() + ");", true); 
     string htmlContents = string.Empty; 
     htmlContents = [email protected]"<div id='contactModalContainer' style='display: none'> 
<div class='panel panel-default panel-details' id='' style='display: none'> 
    <div class='panel-heading' id='divContactModalHeading'> 
     <h3 id='h3contactModalHeading'></h3> 
    </div> 
    <div class='panel-body' id='divContactDetBody'> 
     <form id='custContactDetailsForm'> 
      <div class='row'> 
       <div class='col-sm-6'> 
        <div class='form-group' style=''> 
         <label for='txtFirstName' id='lblFirstName' class='control-label'>First Name: </label> 

         <input data-helper='FirstName' id='contactFirstName' type='text' class='form-control' disabled='disabled' data-editable='true' value='' /> 

        </div> 
       </div> 
       <div class='col-sm-6'> 
        <div class='form-group' style=''> 
         <label for='txtLastName' class='control-label'>Last Name: </label> 
         <input data-helper='LastName' id='contactLastName' type='text' class='form-control' disabled='disabled' data-editable='true' value='' /> 
        </div> 
       </div> 
       <div class='col-md-12'> 
        <div class='form-group' style=''> 
         <label for='txtPositionTitle'>Position/Title: </label> 
         <input id='contactPosition' data-helper='Position' type='text' class='form-control' disabled='disabled' data-editable='true' value='' /> 

        </div> 
       </div> 
       <div class='col-md-12'> 
        <div class='form-group' style=''> 
         <label for='txtSalesOrders'>E-mail: </label> 

         <input id='contactEmail' data-helper='Email' type='text' class='form-control' disabled='disabled' data-editable='true' value='' /> 

        </div> 
       </div> 
       <div class='col-sm-4'> 
        <div class='form-group' style=''> 
         <label for='txtSalesOrders'>Work Phone: </label> 

         <input id='contactWorkPhone' data-helper='DirectPhone' type='text' class='form-control' disabled='disabled' data-editable='true' value='' /> 

        </div> 
       </div> 
       <div class='col-sm-4'> 
        <div class='form-group' style=''> 
         <label for='txtMobilePhone'>Mobile Phone: </label> 

         <input id='contactMobile' data-helper='MobilePhone' type='text' class='form-control' disabled='disabled' data-editable='true' value='' /> 
        </div> 
       </div> 

       <div class='col-sm-4'> 
        <div class='form-group' style=''> 
         <label for='txtFax'>Fax: </label> 
         <input id='contactFax' data-helper='Fax' type='text' class='form-control' disabled='disabled' data-editable='true' value='' /> 
        </div> 
       </div> 


       <div class='col-sm-4'> 
        <div class='form-group' style=''> 
         <label for='txtHomePhone'>Home Phone: </label> 

         <input id='contactHomePh' data-helper='HomePhone' type='text' class='form-control' disabled='disabled' data-editable='true' value='' /> 

        </div> 
       </div> 

       <div class='col-sm-4'> 
        <div class='form-group' style=''> 
         <label for='txtPager'>Other Phone: </label> 
         <input id='contactPager' data-helper='PagerPhone' type='text' class='form-control' disabled='disabled' data-editable='true' value='' /> 
        </div> 
       </div> 

       <div class='col-sm-12'> 
        <div class='form-group'> 
         <label for='txtNotes'>Notes/Comments: </label> 
         <textarea id='contactNotes' data-helper='ContactNotes' type='text' class='form-control' disabled='disabled' rows='3' data-editable='true' value=''></textarea> 
        </div> 
       </div> 

       <div class='col-sm-6'> 
        <div class='form-group' style=''> 
         <label for='txtDateAdded'>Date Added: </label> 
         <label id='contactDateAdded'></label> 
        </div> 
       </div> 

       <div class='col-sm-6' style='clear: both'> 
        <div class='form-group'> 
         <label class='control-label'>Referred By:</label> 
         <div class=''> 
          @@Html.SalesCodeDropDown(new SelectControlOptionsBase('contactReferredBy') 
         {{ 
          includeNull = true,isEditable = editableOptions.yes, 
          disabled = true, 
         }}) 
         </ div > 

        </ div > 
       </ div > 
       < div class='col-md-6' style='clear: both'> 
        <div class='form-group' style=''> 
         <label for='txtEnteredBy'>Entered By: </label> 

         <label id = 'contactEnteredBy' ></ label > 

        </ div > 
       </ div > 
       < div class='col-md-6' style='clear: both'> 
        <div class='checkbox'> 
         <label> 
          <input id = 'contactIsInactiveChkBx' data-helper='Inactive' type='checkbox' disabled data-editable='true' value='0'>Inactive 
          </label> 
        </div> 
       </div> 
      </div> 
     </form> 
    </div> 
</div> 


<div id = 'contactModalFooter' class='form-group' style=''> 
    <button type = 'button' id='btnContactModalClose' style='margin-right: 5px;' class='pull-right btn btn-form-state'>Close</button> 
    <button type = 'button' id='btnContactModalCancel' style='margin-right: 5px;' class='pull-right btn btn-form-state'>Cancel</button> 
    <button type = 'button' id='btnContactModalSave' style='background-color: #EE6723; margin-right: 5px;' class='pull-right btn btn-form-state'>Save</button> 
</div> 

「; リターンMvcHtmlString.Create(htmlContents);

+0

この音厳しい場合に、これでもリモートでCではありません'HtmlHelper'拡張メソッドが使用されているものに失われます(とにかく生成しようとしているHTMLのほんの少ししか使用できません)。再利用可能な 'モーダルフォーム'が必要な場合は、モデルに基づいて部分ビューまたはカスタム 'EditorTemplate'を作成し、' @ Html.Partial() 'または' @ Html.EditorFor() 'を使用して生成します。 –

答えて

0

あなたの@ Html.SalesCodeDropDown(新しいSelectControlOptionsBase( 'contactReferredBy')はHTMLを返す場合、あなたは変数htmlContentsを設定する前に、そしてちょうどことを呼び出し、 。あなたがする必要がどこにCONCAT

0

これが働くことになった。申​​し訳ありません

 public static IHtmlString ContactModal(this HtmlHelper htmlHelper, ContactModalOptions options) 
    { 
     StringBuilder result = new StringBuilder(); 

     //required scripts 
     htmlHelper.AddScriptFile("~/Areas/Customers/Scripts/ContactModal/tmi.customers.contactModal.js"); 
     htmlHelper.AddScriptLine("$('#" + options.controlId + "').contactModal(" + options.ToJson() + ");", true); 
     var body = htmlHelper.Partial("~/Areas/Customers/Views/Contacts/Shared/ContactModalPartial.cshtml").ToHtmlString(); 
     result.AppendLine(body); 
     return MvcHtmlString.Create(result.ToString()); 
    } 
関連する問題