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 模型上的 [必需] 数据注释不会在部分视图上触发,请问有人可以建议吗?谢谢。

4

2 回答 2

1

使用时不会填充布局视图中定义的部分PartialViewResult,因此不会添加不显眼的验证脚本。

您可以通过在只返回部分视图的控制器上创建一个操作来测试它,然后通过$.get()(显然使用 jQuery)调用它。如果您使用console.log(),您可以在 Firebug 中检查结果。你也可以使用 Fiddler 之类的东西;无论如何,如果您查看返回的 HTML,您将不会在任何地方看到脚本引用。

于 2013-11-02T21:29:30.993 回答
0

确切地说,错误的做法是:

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

}

在局部视图中,试着做它只是把

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

它应该工作!

于 2014-01-09T17:14:29.090 回答