日期:2014-05-17  浏览次数:20500 次

请问几个asp.net的mvc问题
1.请问一下,我这样写@Html.ActionLink("美容产品","Article",new{id="articleDetail",newid="5"})
浏览器地址是:http://localhost:21322/Home/Article/articleDetail?newid=5 (这里多了一个Home)

我想要的结果是http://localhost:21322/Article/ArticleDetail?newid=5,我应该怎样修改上面的代码啊!麻烦大家告诉一下我这个MVC菜鸟

2.我获取数据都是用ViewBag,然后在前台输出ViewBag的,这样好吗,或者说这样有什么危害,如果不用ViewBag,一般来说MVC怎么获取多个数据集的,比如说页面有不同数据,新闻、产品这些,那我应该怎么输出来啊。
3.不一定要用Linq来做MVC吧,我获取数据用的是三层架构的最底2层.

------解决方案--------------------
mvc中默认的路由是
routes.MapRoute(
                "Default", // 路由名称
                "{controller}/{action}/{id}", // 带有参数的 URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
            );
如果想到你想的效果要产生link的时候调用指定一个controller的重载的
@Html.ActionLink("美容产品","ArticleDetail", "Article",new{id="articleDetail",newid="5"})

------解决方案--------------------
不用ViewBag可以用Model向View传送数据的,在Action的方面最后返回View的时候返回Model,前台可以直接调用这个Model

retrun View(model);


------解决方案--------------------
MVC跟linq没有一毛钱关系,想用啥用啥

最好找一本关于mvc的书看看了,这些都是基础的基础知识的

可以看看这本书的
<<asp.net mvc3/4 高级编程>>

------解决方案--------------------
要么不用ActionLink,要么改路由,获取多个不同的数据集请定义不同的实体,用model实现!
------解决方案--------------------
加一个route就行了
routes.MapRoute(
                "Article", // 路由名称
                "Article", // 带有参数的 URL
                new { controller = "Home", action = "Article" } // 参数默认值
            );
把这句放在默认路由前面就行了,不过按seo来说querystring是不应该出现的,地址也应该用小写的