【mvc初学者求教!】mvc4+EF同一视图中查询和增加

小聪蛋 2013-12-11 05:32:36
查询用到了分页控件,所以视图中已经有一个@model PagedList<SSFastFoot.Models.Consult>了
但是同一视图中的增加功能还需要@model SSFastFoot.Models.Consult
但是一个视图不能有两个@model,有什么别的办法解决吗?
...全文
289 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
小聪蛋 2013-12-13
  • 打赏
  • 举报
回复
好吧,终于发现原来我的数据表没有设主键!!!低级错误啊!!! 还有谢谢大家的帮忙!!!!
webdiyer 2013-12-12
  • 打赏
  • 举报
回复
你可以创建一个自定义的model类,想传递多少复合类型的参数都可以,象这样: public class MyModel{ public PagedList<SSFastFoot.Models.Consult> PagedConsults{get;set;} public SSFastFoot.Models.Consult SingleConsult{get;set;} } 然后把MyModel做为Model对象传递就行了。 ================================================================= ASP.NET MVC免费分页控件MvcPager 2.0版发布,功能更强大,欢迎使用: http://www.webdiyer.com/mvcpager/
小聪蛋 2013-12-12
  • 打赏
  • 举报
回复
对哦,局部视图,我先试试!
秦浩然 2013-12-12
  • 打赏
  • 举报
回复
class MyViewModel { PagedList<SSFastFoot.Models.Consult> ConsultList { } class SSFastFoot.Models.Consult ConsultModel { } }
骑猪看海 2013-12-12
  • 打赏
  • 举报
回复
viewdata['aa']='aa';
小聪蛋 2013-12-12
  • 打赏
  • 举报
回复
改成这样了

public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                Models.Consult consult = new SSFastFoot.Models.Consult();
               
                TryUpdateModel(consult,collection);
            
                if (ModelState.IsValid)
                {
                    consult.CreatDate = DateTime.Now;
                    consult.ReplyContents = "";
                    consult.ReplyDate = null;
                    db.Consults.Add(consult);
                    db.SaveChanges();
                    return Content("<script>alert('添加成功!')</script>");

                }
                return Content("<script>alert('xxxxxx')</script>");
            }
            catch
            {
                return Content("<script>alert('!!!!!!')</script>");
            }
        }
可是ModelState.IsValid总不通过。

public partial class Consult
    {
        [Key]
        public int Idx { get; set; }
        [Required(ErrorMessage="请输入标题。")]
        [StringLength(100,ErrorMessage="您的输入过长。")]
        public string Title { get; set; }

        [Required(ErrorMessage="请输入您的提问内容。")]
        [StringLength(400, ErrorMessage = "您的输入过长。")]
        public string Contents { get; set; }

        public System.DateTime CreatDate { get; set; }

        [Required(ErrorMessage = "请输入您的姓名,如果您不想透露姓名,可以填写称呼。")]
        [StringLength(50, ErrorMessage = "您的输入过长。")]
        public string RealName { get; set; }

        [StringLength(100, ErrorMessage = "您的输入过长。")]
        public string Address { get; set; }

        [StringLength(40, ErrorMessage = "您的输入过长。")]
        [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}",ErrorMessage="请输入正确的邮箱地址。")]
        public string E_mail { get; set; }

        [Required(ErrorMessage = "请输入您的电话。")]
        [StringLength(20, ErrorMessage = "您的输入过长。")]
        public string TelePhone { get; set; }

        public string ReplyContents { get; set; }

        public Nullable<System.DateTime> ReplyDate { get; set; }
    }
实体类也检查了,感觉也没啥问题。写了特性的字段都实在视图中填写的。
小聪蛋 2013-12-12
  • 打赏
  • 举报
回复
引用 14 楼 C_Krui 的回复:
假如重复多,可以选择局部视图,如果就这一个页面,可以返回个字典,或者自定义类
没什么重复的,谢谢你的回答,我已经使用自定义类了。但是现在是验证信息总是通不过,数据添加不到数据库。。。。 页面已经通过了所有的错误提示,但是不往if (ModelState.IsValid)中走
dralion 2013-12-12
  • 打赏
  • 举报
回复
假如重复多,可以选择局部视图,如果就这一个页面,可以返回个字典,或者自定义类
小聪蛋 2013-12-12
  • 打赏
  • 举报
回复
感觉就刷新了一下页面,没有别的反应,添加成功和失败的弹出框也没出
小聪蛋 2013-12-12
  • 打赏
  • 举报
回复
引用 11 楼 webdiyer 的回复:
没看懂什么意思,什么叫特性限制?
额,好吧,提示已经出来了,但是提交之后数据没有存入数据库 代码是这样的

 [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                var model = new Models.ConsultModels();
                var consult = model.SingleConsult;
                TryUpdateModel(consult, collection);
            
                if (ModelState.IsValid)
                {
                    consult.CreatDate = DateTime.Now;
                    consult.ReplyContents = "";
                    consult.ReplyDate = null;
                    db.Consults.Add(consult);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                return View();
            }
            catch
            {
                return View();
            }
        }

webdiyer 2013-12-12
  • 打赏
  • 举报
回复
引用 9 楼 h25930212 的回复:
[quote=引用 7 楼 webdiyer 的回复:] 你可以创建一个自定义的model类,想传递多少复合类型的参数都可以,象这样: public class MyModel{ public PagedList<SSFastFoot.Models.Consult> PagedConsults{get;set;} public SSFastFoot.Models.Consult SingleConsult{get;set;} } 然后把MyModel做为Model对象传递就行了。 ================================================================= ASP.NET MVC免费分页控件MvcPager 2.0版发布,功能更强大,欢迎使用: http://www.webdiyer.com/mvcpager/
又出现了新问题,在实体类中设置了特性限制,但是点击提交也不显示错误提示 [/quote] 没看懂什么意思,什么叫特性限制?
luo18273197110 2013-12-12
  • 打赏
  • 举报
回复
最好是用ajax 网上现在好多基于jQuery的表格插件。
小聪蛋 2013-12-12
  • 打赏
  • 举报
回复
引用 7 楼 webdiyer 的回复:
你可以创建一个自定义的model类,想传递多少复合类型的参数都可以,象这样: public class MyModel{ public PagedList<SSFastFoot.Models.Consult> PagedConsults{get;set;} public SSFastFoot.Models.Consult SingleConsult{get;set;} } 然后把MyModel做为Model对象传递就行了。 ================================================================= ASP.NET MVC免费分页控件MvcPager 2.0版发布,功能更强大,欢迎使用: http://www.webdiyer.com/mvcpager/
又出现了新问题,在实体类中设置了特性限制,但是点击提交也不显示错误提示
小聪蛋 2013-12-12
  • 打赏
  • 举报
回复
又出现了新问题,在实体类中设置了特性限制,但是点击提交也不显示错误提示
  • 打赏
  • 举报
回复

<div>
@Html.Partial("view1", Model)
</div>
<div>
@Html.Partial("view2", Model2)
</div>
  • 打赏
  • 举报
回复
可以用局部视图
小聪蛋 2013-12-11
  • 打赏
  • 举报
回复
没人会mvc????

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧