mvc 方面的问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mvc 方面的问题?相关的知识,希望对你有一定的参考价值。

为什么,值类型+? 变成了引用类型。 这是哪里来的语法? 我到哪里去学?
JsonResult()是返回一串json格式的数据., 视图层是 在哪里处理、 怎么处理,这些数据的?
大神,当年事怎么学习这方面的知识? 小弟是菜鸟, 求大神详细解答。
---------------------------------------------------------------------
这是某个项目里面 ,mvc中 控制层 中的一个函数,
public ActionResult AddCar(int? id, string carNum)
……………………
return new JsonResult() Data = new result = 1, msg = "添加车辆失败!" ;

问题一: 形参中的 int ? id 是什么意思?
问题二: return jsonRestlt();怎么和 视图层(view),进行交互的?
新建的mvc程序都是,return view(),这里是return JsonReslt(),这是为什么?

本人是菜鸟,求高手耐心仔细解答.用的是mvc 框架, 语言 js jquery Easyui, 开发工具是vs2010

问题一:三元表达式,id可不传递参数,即int可赋值null

问题二:return  view(参数“new JsonResult() Data = new result = 1, msg = "添加车辆失败!" ”),视图页使用参考下面的

        public ActionResult Index(int? page)

        

            if (ViewData["k"] != null)

            

                System.IO.File.WriteAllText("D:\\\\tid7.txt", ViewData["k"].ToString());

            

            var newsClasses = from c in news.NewsClassesSet orderby c.ID select new SelectListItem  Text = c.ClassName, Value = c.ID ;

            ViewBag.NewsClasses = newsClasses;

            var newsList = from m in news.NewsSet orderby m.BookTime descending select m;

            PagerHelper<News> pager = new PagerHelper<News>(newsList, "/News/index", 1, page ?? 1, 3, true);

            return View(pager);

        

@
    Layout = null;

@model PagerHelper<MvcApplication2.Models.News>
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>新闻列表</title>
    <link type="text/css" href="/Images/css.css" rel="Stylesheet" />
    <script type="text/javascript">
        function PagePostSubmit(url, page) 
            document.getElementById("PageIndex").value = page;
            document.forms[0].method = "post";
            document.forms[0].action = url;
            document.forms[0].submit();
        
    </script>
</head>
<body>
    <div>
        <table cellpadding="0" cellspacing="0" style="width:750px; background-image:url(/Images/pageheadbg.jpg)">
            <tr>
                <td style="height:30px; vertical-align:top">
                    <div style="margin-left:20px; margin-top:8px; color:White; font-size:11pt; font-weight:bold" id="PTitle" runat="server">信息列表</div>
                </td>
            </tr>
        </table>
        <br />
        @using (Html.BeginForm())
        
        <table cellpadding="0" cellspacing="0" style="width:750px">
            <tr>
                <td class="t1" style="width:15%; height:29px">
                    新闻类别</td>
                <td class="t1" style="width:35%">
                    @Html.DropDownList("NewsClasses", ViewBag.NewsClasses as SelectList, "—请选择—")</td>
                <td class="t1" style="width: 15%">
                    信息标题</td>
                <td class="t2" style="width:35%">
                    @Html.TextBox("NewsTitle")</td>
            </tr>
            <tr>
                <td class="t4" style="height:35px; text-align:center" colspan="4">
                    @Html.Hidden("PageIndex", Model.PageIndex.ToString())
                    <input type="submit" value="- 查询 -" />
                    <input type="button" value="- 添加 -" onclick="location.href = '/News/NewsEdit'" />
                </td>
            </tr>
        </table>
        
        @Html.RenderPartial("_login", Model);
        <table cellpadding="0" cellspacing="0" style="width: 750px">
            <tr>
                <td class="t1" style="text-align:center; width:15%; background-color:#0ff; height:29px">
                    新闻类别</td>
                <td class="t1" style="text-align:center; width:45%; background-color:#0ff">
                    新闻标题</td>
                <td class="t1" style="text-align:center; width:10%; background-color:#0ff">
                    阅读次数</td>
                <td class="t1" style="text-align:center; width:15%; background-color:#0ff">
                    发布时间</td>
                <td class="t2" style="text-align:center; width:15%; background-color:#0ff">
                    操作</td>
            </tr>
            @
                List<SelectListItem> nclist = (ViewBag.NewsClasses as IQueryable<SelectListItem>).ToList();
            
            @foreach (var news in Model.PagedData)
            
            <tr>
                <td class="t1" style="text-align:center; height:29px">
                    @nclist.FirstOrDefault(c => c.Value == news.NewsClass).Text&nbsp;</td>
                <td class="t1">
                    @news.NewsTitle&nbsp;</td>
                <td class="t1" style="text-align:center">
                    @news.ReadCounts&nbsp;</td>
                <td class="t1" style="text-align:center">
                    @news.BookTime&nbsp;</td>
                <td class="t2" style="text-align:center">
                    @Html.ActionLink("编辑", "NewsEdit", new  news.ID )
                    &nbsp;&nbsp;
                    @Html.ActionLink("删除", "NewsDelete", new  news.ID , new  onclick = "return confirm('你确认删除吗?')" )
                </td>
            </tr>
            
            <tr>
                <td class="t4" style="height:45px;text-align:center" colspan="5">
                    @Html.Raw(Model.PageNumberBar)
                </td>
            </tr>
        </table>
    </div>
</body>
</html>

追问

int ? id 是哪里的语法? 从哪里可以学到? 楼主, 小弟是菜鸟中的菜鸟, 想请教楼主当年学习, mvc的时候, 已经具备了什么样的基础?

追答

这是语言基础与框架无关,不仅有int ? id 还有int ?? id ,掌握语言基础,这是最基础的了,数据类型,要运用mvc,首先会得三层,其他就是mvc新知识的学习,比如razor语法等等

参考技术A 如上面的所说,int 是值类型,他的默认值是 0 。但是有的时候,你QueryString并不带这个id参数。
而你又没有一个Action可以处理这个请求。
但是你要处理怎么办呢?
你就需要给一个Action 让它能够接受,你这个不带id参数的请求。

注:对于不存在的东西,即为null。
那么,你就需要一个能够接受null值的Action。

所以,int? 扩展了int 的范围,增加了null值。

而对于楼上说的 ??

public string poo(int? id)

//todo


调用:
int? x;
//todo...

poo(x??5);
也就是说,x如果为null,则默认传值5.

MVC 新手关于强类型视图的问题

【中文标题】MVC 新手关于强类型视图的问题【英文标题】:MVC Newbie Question about Strongly-Typed Views 【发布时间】:2009-07-17 18:36:59 【问题描述】:

我认为这是一个命名空间问题,答案可能非常简单,但我是 MVC 方面的新手。

我有多个名为“索引”的视图。在我尝试创建一个名为“Index”的新的强类型视图之前,这不是问题。

(对于它的价值,我正在尝试按照 NerdDinner 示例中的步骤进行操作,但使用的是 VB 而不是 C#。)

当我添加名为“Index”的强类型视图时,编译器抛出了这个错误:

基类'System.Web.Mvc.ViewPage(Of System.Collections.Generic.List(的 Models.User))' 为类指定 “索引”不能不同于 基类“System.Web.Mvc.ViewPage” 它的其他部分类型之一。

有人能告诉我为什么会这样,我可以做些什么来缓解这个问题吗?

提前致谢。

查看:

<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" 
         AutoEventWireup="false" CodeBehind="Index.aspx.vb" 
         Inherits="SampleSite.Index" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
</asp:Content> 

代码背后:

Imports System.Web.Mvc 
Imports System.Collections.Generic 

Partial Public Class Index Inherits System.Web.Mvc.ViewPage(Of List(Of SampleSite.Models.User)) 
End Class 

【问题讨论】:

请发Index查看 为你添加到原帖中 这个问题是由于我对 MVC 进行 Web 视图的方式缺乏了解(因此,问题标题中的“新手”)。我在每个视图文件夹中添加了一个名为“Index”的视图,而不是在每个控制器上使用“Index”操作。现在我知道了这一点,我不再需要命名每个视图。只有一个 Index.aspx,它位于 Home 视图文件夹中。感谢那些试图回答我愚蠢问题的人。 【参考方案1】:

我认为您需要在页面定义中从 ViewPage(Of List(Of SampleSite.Models.User)) 继承:

这样可以吗??

您的强类型 ViewPage 必须继承自“ViewPage(Of T)”基本泛型类型 - 其中 T 是您要在视图页面中显示的数据类型(“视图模型”)。

马克

【讨论】:

【参考方案2】:

如果您说您有多个“索引页面”,那么问题在于它们都具有相同的命名空间。 您有从 ViewPage 派生的 Index(a) 和从 List(..) 的 ViewPage 派生的 Index(b),因为这些类被声明为部分的并且具有相同的命名空间,编译器试图将它们放在一个类中,但这是不可能的,因为它们不要从同一个基类继承。

这样做: 索引 (a) -> Inherits="SampleSite.Index" Index (b) -> Inherits="SampleSite.XXXXXXX.Index" 并相应修改后面的代码。

【讨论】:

【参考方案3】:

我认为这只是一个命名空间问题。我将有问题的 Index 类包装在如下所示的命名空间中,它解决了这个问题。不确定这是否是解决此问题的正确方法,但它确实有效。

导入 System.Web.Mvc 导入 System.Collections.Generic

命名空间示例站点

Partial Public Class Index
    Inherits System.Web.Mvc.ViewPage(Of List(Of Models.User))

End Class

结束命名空间

【讨论】:

以上是关于mvc 方面的问题?的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中实现标准软件设计模式(专注于 MVC)

Aspnet Mvc 前后端分离项目手记 关于跨域问题(还有前言)

比较新项目的 ASP.NET MVC 和 Grails

MVC Web 应用程序的域驱动设计与数据库驱动设计

Structs框架

了解 MVC 模式