MVC——View向Controller传值(一)——通过实体

 

在jQuery的前提下,当然如果用Vue框架,问题会十分简单

一、实体为简单字段

要保证input的name与Model的字段名相同

Skill类,有Name,Description,Icon三个字段

//实体Skill类
public class Skill : EntityBase<int>
{
        public Skill()
        {
            
        }
        [Display(Name = "名称")]
        public virtual string Name { get; set; }
       
        [Display(Name = "描述")]
        public virtual string Description { get; set; }

        [Display(Name = "图标")]
        public virtual string Icon { get; set; }
}

 

 

Create页面

可以使用@Html帮助类系列,也可以直接input

<div class="form-group">
    <label class="control-label col-md-3">
        @Html.DisplayNameFor(m => m.Name) :
    </label>
    <div class="col-md-4 ">
        @Html.TextBoxFor(m => m.Name, new { @class = "form-control" })//借助@html
    </div>
</div>
<div class="form-group">
    <label class="control-label col-md-3 mylabel">
        图标 :
    </label>
    <div class="col-md-4">
        <input class="form-control " id="Icon" name="Icon" /> //name与字段名保持一致    
    </div>
</div>
<div class="form-group">
    <label class="control-label col-md-3">
        @Html.DisplayNameFor(m => m.Description) :
    </label>
    <div class="col-md-4 ">
        @Html.TextBoxFor(m => m.Description, new { @class = "form-control" })
    </div>
</div>

控制器

        /// <summary>
        /// 创建数据
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>

        [HttpPost]
     
        public ActionResult Create(Skill dto)
        {
            var result = _SkillContract.Insert(dto);//封装的Insert方法
            return Json(result, JsonRequestBehavior.AllowGet);
        }

二、实体中含有实体

Skill类与Gallery类是一对多的关系,即一个skill可以关联多个Gallery

//实体Skill类
public class Skill : EntityBase<int>
{
        public Skill()
        {
            
        }
        [Display(Name = "名称")]
        [StringLength(20, ErrorMessage = "最大长度不能超过{1}个字符")]
        public virtual string Name { get; set; }
       
        [Display(Name = "描述")]
        public virtual string Description { get; set; }

        [Display(Name = "图标")]
        public virtual string Icon { get; set; }

        public virtual ICollection<Gallery> Galleries { get; set; }

}

//实体Gallery类
public class Gallery : EntityBase<int>
{
        
        [Display(Name = "名称")]
        public virtual string Name { get; set; }
       
        [Display(Name = "描述")]
        public virtual string Description { get; set; }

        public virtual int SkillId{ get; set; }

}

此时,控制器不变,

Create页面,将Gallery的数据读到一个list中,通过json形式post

html部分:

<div class="form-group">
    <label class="control-label col-md-3">
        @Html.DisplayNameFor(m => m.Name) :
    </label>
    <div class="col-md-4 ">
        @Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
    </div>
</div>
<div class="form-group">
    <label class="control-label col-md-3 mylabel">
        @Html.DisplayNameFor(m => m.Icon) :
    </label>
    <div class="col-md-4">
        <input class="form-control " id="Icon" name="Icon"  />
    </div>
</div>
<div class="form-group">
    <label class="control-label col-md-3">
        @Html.DisplayNameFor(m => m.Description) :
    </label>
    <div class="col-md-4 ">
        @Html.TextBoxFor(m => m.Description, new { @class = "form-control" })
    </div>
</div>
/* Gallery部分*/
<ul id="GalleryDiv" >
        <li class="col-md-8" >                 
            <input name="Name" id="Name" />  
        </li>
        <li class="col-md-8" >                 
            <input name="Icon" id="Icon" />  
        </li>
</ul>

js部分:(ps:如果字段很多,一个一个取值很麻烦,暂时没找到好的方法) 

function GetSkill() {
            var name = $("#Name").val();
            var icon = $("#Icon").val();
          
            var list = [];
            $("#GalleryDiv").find('li').each(function () {
                var item = $(this);
                list.push({
                    Name: $("#Name").val(),
                    Icon: $("#Icon").val(),
                })
            })
            //skill实体
            var skill = {
                Name: name,
                Icon: icon,               
                Galleries:list,//对应的list部分

            }
            return skill;
        }

 $.ajax({
            url: "@Url.Action("Create")",
            type: "POST",
            data: { dto: GetSkill() },
            error: function (data) {
                 $.whiskey.web.alert({
                    type: "danger",
                    content: "创建失败!",
                 });
           }
       })

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值