2013-11-02 48 views
0

我有以下的動作方法,使下面的局部視圖: -部分意見將忽略所有的模型數據註解

 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

但unobrrusice驗證腳本是從主視圖填充的,它調用了部分視圖?這不夠嗎? –

+1

如果部分在頁面之後加載(通過Ajax),則不。不顯眼的腳本只能運行一次,DOM準備就緒。 –

+0

但我在我的部分視圖中引用了這個@section Scripts {Scripts.Render(「〜/ bundles/jqueryval」) }。所以不顯眼的腳本應該在部分視圖DOM上工作。我對嗎 ? –

0

沒錯,一個錯誤的做法是有:

@section Scripts { 
@Scripts.Render("~/bundles/jqueryval") 
在局部視圖

}

,嘗試做只是把

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

,它應該工作!