2016-05-10 8 views
-1

Я создал специальный HTML-помощник для модальности контакта, чтобы любой пользователь нашего приложения мог использовать его с помощью @ Html.ContactModal (модель и параметры) проблема в том, что на модальном есть еще один html-помощник для кода продаж, и бритва неправильно отображается. Я пытался сделать все с частичным представлением только для того, чтобы узнать, что вы не можете (или не должны) использовать частичные с html-помощниками, только с контроллерами (я новичок во всем этом ...), предложил сотрудник Я использую конструктор тегов, но я хотел спросить здесь сначала, прежде чем писать всю форму с помощью конструктора тегов.Html helper внутри 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

Извините, если этот звук суров, но это даже отдаленно не с потерять то, что используется метод расширения 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()); 
    }