新足迹

 找回密码
 注册

精华好帖回顾

· 一个伴侣移民的2008年度总结(更新了!) (2008-12-27) 林草123 · 美丽请别忽略细节保养系列——心得之:护唇篇 + 护脖颈篇 (整理完毕) (2009-3-22) Tiger_Karen
· Prime Picks(2)-- Misery (by Stephen King) (2008-7-25) 孔武 · X-Trail 墨尔本团购(后续购买和service请先阅一楼). (1% finance, 不过价格涨了, 想买的最好组个小队伍) (2012-5-3) cloudaus
Advertisement
Advertisement
查看: 1760|回复: 23

asp.net mvc3 这个应该如何做? [复制链接]

头像被屏蔽

禁止访问

发表于 2011-8-4 19:12 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有个url, add emails into a db.

如何实现当用户点击 Add button. 回到同一页,下面把刚才 add 过的 emails 都显示出来??

不知说明白了没有
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-8-4 19:13 |显示全部楼层

不想要 session

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整

发表于 2011-8-4 19:30 |显示全部楼层
此文章由 huazhb 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huazhb 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你在Control中吧收到到Email填入Model中,然后返回View(Mode)就可以了, View中你判断如果Model有Email, 就显示,否则就不显示

评分

参与人数 2积分 +6 收起 理由
jerryclark + 2 我很赞同
atransformer + 4 不明白呢

查看全部评分

发表于 2011-8-4 19:57 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
同意楼上的做法,我们理解的是不是太简单了
头像被屏蔽

禁止访问

发表于 2011-8-4 22:04 |显示全部楼层

肯定是我对MVC太不了解了。

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
没明白你们说的。 这个咋改?

[HttpPost]
        public ActionResult Add(UnsubscribedEmail unsubscribedEmail)
        {
            try
            {
                unsubscribedEmail.AddedBy = User.Identity.Name;

                using (var db = new MyEntities())
                {
                    db.UnsubscribedEmails.AddObject(unsubscribedEmail);
                    db.SaveChanges();
                    
                }  
                return View();
                //return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

发表于 2011-8-4 22:20 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你的要求是不是这样:
原来的表中有1万email adress,

现在用户提交10个email address,
dbsave后,因为3个已经在表里,还有一个因为另外原因不能插入,所以实际成功插入数据表中6个,

因此你想把这6个成功的email返回给客户端?

评分

参与人数 1积分 +4 收起 理由
atransformer + 4 太给力了

查看全部评分

Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-8-4 22:21 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-8-4 21:20 发表
你的要求是不是这样:
原来的表中有1万email adress,

现在用户提交10个email address,
dbsave后,因为3个已经在表里,还有一个因为另外原因不能插入,所以实际成功插入数据表中6个,

因此你想把这6个成功的email返回给客户端?


正是,正是。 如何做?

发表于 2011-8-4 22:25 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
insert的时候output
我不知道在entity 代码C# 里怎么用output
在sql里是可以用output的 (inserted),
大不了把output的结果放viewbag,然后显示到view里。

你可以google一下 sql output

基本的逻辑是,当我们insert 或者 update的时候,inserted / deleted等数据是内存里正在使用中的中间数据,output就是直接把这些内存结果返回,按你自己的需求弄

[ 本帖最后由 典 于 2011-8-4 21:29 编辑 ]

发表于 2011-8-4 22:36 |显示全部楼层
此文章由 huazhb 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huazhb 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你这到底是问MVC还是Entity Framework啊?MVC的话你就把所有不成功的emails放到一个list中, 然后 ViewBag.FaiedEmails =list 直接返回View就行了。 EntitiyFramework的话, 你要先check一下Email是否已经存在然后再保存把, 如果存在你就直接返回View了。

发表于 2011-8-4 22:40 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
EF让人头痛

发表于 2011-8-4 22:51 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 huazhb 于 2011-8-4 21:36 发表
你这到底是问MVC还是Entity Framework啊?MVC的话你就把所有不成功的emails放到一个list中, 然后 ViewBag.FaiedEmails =list 直接返回View就行了。 EntitiyFramework的话, 你要先check一下Email是否已经存在然后再保存把, 如果存在你就直接返回View了。


关于 EntitiyFramework,按你说的那样搞不知道会不会有问题,比如说检查的时候没问题,10个都可以插入,实际DB save的时候,可能另外一个用户捷足先登一点点,已经插入了同样的数据,

output则是数据库的一种反馈,返回的是已经inserted的数据,万无一失

[ 本帖最后由 典 于 2011-8-4 21:53 编辑 ]
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-8-4 22:55 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 huazhb 于 2011-8-4 21:36 发表
你这到底是问MVC还是Entity Framework啊?MVC的话你就把所有不成功的emails放到一个list中, 然后 ViewBag.FaiedEmails =list 直接返回View就行了。 EntitiyFramework的话, 你要先check一下Email是否已经存在然后再保存把, 如果存在你就直接返回View了。


EF + MVC

看来我的表达能力太差

我要实现的是。 用户按一下ADD钮. 无论是否成功, 回到 ADD page,这样用户可以连续 ADD. 如果成功,页面底部显示所以自访问这个页面以来的所有加过的 Emails

发表于 2011-8-4 23:00 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
其实运行效率最高的办法是直接用一个ajax call, 那个dbsave function直接调用一个 sp,
在sp里output inserted
然后通过这个ajax call返回这个output 结果,

但是这样做可能破坏你的pattern, 让你觉得不美观。

发表于 2011-8-4 23:01 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-8-4 21:55 发表


EF + MVC

看来我的表达能力太差

我要实现的是。 用户按一下ADD钮. 无论是否成功, 回到 ADD page,这样用户可以连续 ADD. 如果成功,页面底部显示所以自访问这个页面以来的所有加过的 Emails


这不是一个典型的ajax啊,Ajax.BeginForm, 然后EF检查,没有new 一个 Model 然后 AddObject。EF不是为高并发的应用设计的,也可以用,要加个什么propety来着,自个狗吧

评分

参与人数 1积分 +4 收起 理由
atransformer + 4 大哥,来点codes吧。

查看全部评分

发表于 2011-8-4 23:19 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
.
家里没有vs,不给力啊

[ 本帖最后由 Dan.and.Andy 于 2011-8-4 22:22 编辑 ]
头像被屏蔽

禁止访问

发表于 2011-8-4 23:23 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Dan.and.Andy 于 2011-8-4 22:19 发表
.
家里没有vs,不给力啊


我的email list 在哪里??!!!!!!!!!!
Advertisement
Advertisement

发表于 2011-8-4 23:30 |显示全部楼层
此文章由 huazhb 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huazhb 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你这是一个个加, 就直接用EF判断基本就可以了。 然后自登陆后所有加过的email你可以用一个hidden字段保存一下, 然后每加一个就append到这个hidden字段。view上想办法吧这个hidden字段显示出来
原帖由 atransformer 于 2011-8-4 21:55 发表


EF + MVC

看来我的表达能力太差

我要实现的是。 用户按一下ADD钮. 无论是否成功, 回到 ADD page,这样用户可以连续 ADD. 如果成功,页面底部显示所以自访问这个页面以来的所有加过的 Emails
头像被屏蔽

禁止访问

发表于 2011-8-4 23:39 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 huazhb 于 2011-8-4 22:30 发表
你这是一个个加, 就直接用EF判断基本就可以了。 然后自登陆后所有加过的email你可以用一个hidden字段保存一下, 然后每加一个就append到这个hidden字段。view上想办法吧这个hidden字段显示出来


hidden字段??

发表于 2011-8-4 23:41 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
假设你只有一个textbox

view里
@using (Ajax.BeginForm("emailAction", "Controller",
            new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "emailEntered", InsertionMode = InsertionMode.Replace }))
    {
        <div>
           @Html.LabelFor(m => m.email)
           @Html.TextBoxFor(m => m.email)
        </div>
   
        <input type="submit" id="submitForm" value="Submit Form" />
    }

    <div id="emaiEntered">d</div>

controller里

[HttpPost]
        public PartialViewResult  emailAction(string email)
        {
                 if (!db.UnsubscribedEmails.Any(o => o.email == email))
                 {
                           var obj = new UnsubscribedEmails {email = email, ...}
                          db.UnsubscribedEmails.AddObject(obj);
                          db.SaveChanges();
                          return PartialView("_email", obj);
                 }            


再定义一个强类型的 UnsubscribedEmails的view -- _email

@model db.UnsubscribedEmails
<div>
@Model.email
</div>
头像被屏蔽

禁止访问

发表于 2011-8-4 23:49 |显示全部楼层

非常谢谢 Dan.and.Andy 同学

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我再研究研究

发表于 2011-8-5 10:34 |显示全部楼层
此文章由 huazhb 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huazhb 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你这个没有考虑所有加过得邮件阿
原帖由 Dan.and.Andy 于 2011-8-4 22:41 发表
假设你只有一个textbox

view里
@using (Ajax.BeginForm("emailAction", "Controller",
            new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "emailEntered", InsertionMode = InsertionMode.Rep ...
Advertisement
Advertisement

发表于 2011-8-5 11:06 |显示全部楼层

学会正确的问问题

此文章由 混不到坑的萝卜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 混不到坑的萝卜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你这样零零散散的code让人无从下手。你弄个简单的project把你的关键性的code都放进去,弄个sql server express的mdb作为数据库端,整个弄一个可以编译运行的solution作为附件拿出来,大家才好有针对性的提建议、帮助修改啊。
头像被屏蔽

禁止访问

发表于 2011-8-5 11:56 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 混不到坑的萝卜 于 2011-8-5 10:06 发表
你这样零零散散的code让人无从下手。你弄个简单的project把你的关键性的code都放进去,弄个sql server express的mdb作为数据库端,整个弄一个可以编译运行的solution作为附件拿出来,大家才好有针对性的提建议、帮助修改啊。


恩,小强说的有道理。

发表于 2011-8-5 22:13 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 huazhb 于 2011-8-5 09:34 发表
你这个没有考虑所有加过得邮件阿


如果是这样,更改InsertionMode = InsertionMode.InsertAfter 就ajax的把加过的email一个个的码到<div id="emaiEntered"></div>里面了。

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部