mvc [Remote]标签参考单独的项目控制器

时间:2018-06-21 15:10:55

标签: c# asp.net-mvc validation entity-framework-6

首先,我想说我知道我的问题,但我不知道如何解决。 我的任务是清理应用程序的验证部分。 我们在单独的项目中有实体模型和MVC应用程序,一个称为“核心”,另一个称为“ webapp”

我似乎无法启动我的[远程]验证。我已经完成了研究,但是我相信这是因为,我正在尝试在单独的项目中引用控制器。

核心项目中的简化模型看起来像

namespace Project.Core.Models
{
    [Table(name: "MT_DATABASE_SERVERS")]
    public class DatabaseServer : ModelBase
    {
        [Key]
        public int Id { get; set; }

        [Required]
        [MaxLength(500)]
        [Display(Name = "Database Server")]
        [Remote("IsPropertyExists","DatabaseServers", HttpMethod = "POST",ErrorMessage = "This Server is already in use.")]
        public string ServerName { get; set; }
    }
}

这是简化的控制器逻辑

namespace Project.WebApp.Controllers.Servers
{
    public class DatabaseServersController : ControllerBase
    {
        [HttpPost]
        public ActionResult Create(DatabaseServer databaseServer
        {
            using (var db = GetMTContext()) 
            {
                db.DatabaseServers.Add(databaseServer);
                db.SaveChanges();
                return RedirectToAction("List");
            }
        }

        [HttpPost]
        public ActionResult IsPropertyExists(string property)
        {
            using (var db = GetMTContext())
            {
                return Json(!db.DatabaseServers.Any(x => x.ServerName == property), JsonRequestBehavior.AllowGet);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您需要指定my_callback,然后再指定

之类的代码
execute

但是条件是您需要在模型或实体中添加或存在其他字段AdditionalFields = "property"