2013-11-02 4 views
0

I가 다음과 같은 부분 뷰를 렌더링 다음과 같은 조치 방법 : -부분보기

 public ActionResult CreateVMNetwork(int vmid) 
     { 
      AssignIps vmips = new AssignIps() 
      { 
       TechnologyIP = new TechnologyIP() { TechnologyID = vmid}, 
       IsTMSIPUnique = true, 
       IsTMSMACUnique = true 
      }; 
      return PartialView("_CreateNetworkInfo",vmips); 
     } 

부분보기는 다음과 같습니다 -

model TMS.ViewModels.AssignIps 

    @if (this.ViewContext.FormContext == null) 
{ 
    this.ViewContext.FormContext = new FormContext(); 
} 

@using (Ajax.BeginForm("CreateVMNetwork", "VirtualMachine", new AjaxOptions 

{ 
    InsertionMode = InsertionMode.InsertAfter, 
    UpdateTargetId = "networktable", 
    LoadingElementId = "loadingimag", 
    HttpMethod= "POST", 
    OnSuccess="submitform" 





})) 
{ 
    @Html.ValidationSummary(true) 
    @Html.HiddenFor(model=>model.TechnologyIP.TechnologyID) 

@Html.AntiForgeryToken() 
<div> 
<span class="f">IP Address</span> 

@Html.EditorFor(model => model.TechnologyIP.IPAddress) 
@Html.ValidationMessageFor(model => model.TechnologyIP.IPAddress)            

    <input type="CheckBox" name="IsTMSIPUnique" value="true" @(Html.Raw(Model.IsTMSMACUnique ? "checked=\"checked\"" : "")) /> IP Unique. | 
<span class="f"> MAC Address</span>  
@Html.EditorFor(model => model.TechnologyIP.MACAddress) 
@Html.ValidationMessageFor(model => model.TechnologyIP.MACAddress)            

<input type="CheckBox" name="IsTMSMACUnique" value="true" @(Html.Raw(Model.IsTMSMACUnique ? "checked=\"checked\"" : "")) /> MAC Unique. 

</div> 


     <input type="submit" value="Save" class="btn btn-primary"/> 
} 


@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 

하지만 뷰 모델에 대한 모든 데이터 주석이 부분보기에 발생하지 않습니다는 AssignIps보기 모델 클래스는 다음과 같습니다 -

namespace TMS.ViewModels 
{ 
    public class AssignIps 
    { 
     public TechnologyIP TechnologyIP { get; set; } 

     public bool IsTMSIPUnique { get; set; } 
     public bool IsTMSMACUnique { get; set; } 

    } 
} 
,개

그는 TechnologyIP 모델 클래스는 다음과 같습니다 -

namespace TMS.Models 
{ 
    [MetadataType(typeof(TechnologyIP_Validation))] 

    public partial class TechnologyIP 
    {}} 


namespace TMS.Models 
{ 
    public class TechnologyIP_Validation 
    { 
     [Required] 
     public string IPAddress { get; set; } 

하지만 TechnologyIP 모델의 [필수] 데이터 주석, 부분보기에 발생하지 않습니다 ,, 할 수있는 사람 adovce하세요? 감사합니다. .

답변

1

PartialViewResult을 사용할 때 레이아웃보기에 정의 된 섹션이 채워지지 않으므로 눈에 잘 띄지 않는 유효성 검사 스크립트가 추가되지 않습니다.

컨트롤러에서 부분보기 만 반환하는 동작을 만든 다음 이것을 $.get() (분명히 jQuery 사용)을 통해 호출하여 테스트 할 수 있습니다. console.log()을 사용하는 경우 Firebug에서 결과를 검사 할 수 있습니다. Fiddler와 같은 것을 사용할 수도 있습니다. HTML 반환을 보면 관계없이 스크립트 참조가 어디에도 표시되지 않습니다.

+0

그러나 부분보기를 호출하는 기본보기에서 유엔 검증 스크립트가 채워 졌습니까? 이것으로 충분하지 않니? –

+1

부분이 페이지 다음에로드되면 (Ajax를 통해), 아니오. 눈에 잘 띄지 않는 스크립트는 DOM에서 한 번만 실행됩니다. –

+0

하지만 내 부분보기 안에이 @section 스크립트 { @ Scripts.Render ("~/bundles/jqueryval") }을 참조하고 있습니다. 눈에 거슬리지 않는 스크립트는 부분 뷰 DOM에서 작동해야합니다. 내가 맞습니까? –

0

정확히, 잘못된 연습을하는 것입니다 :

@section Scripts { 
@Scripts.Render("~/bundles/jqueryval") 

}

부분보기에, 그냥

@Scripts.Render("~/bundles/jqueryval") 

퍼팅을하려고하고 그것을 작동합니다!