Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 谁能给我解释一下ASP.NETMVC吗?_C#_Asp.net Mvc - Fatal编程技术网

C# 谁能给我解释一下ASP.NETMVC吗?

C# 谁能给我解释一下ASP.NETMVC吗?,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试进入MVC,目前正在阅读wrox professional ASP.NET MVC书籍 到目前为止我有点了解。不是每个URL都指向一个页面,而是指向一个控制器。然后,控制器操作获取数据并决定使用哪个视图 我也明白,如果我有一个类似/product.aspx?id=100的url,那么控制器将获得产品详细信息,并将其与“show product”视图合并 现在有一点我不明白 如果我的产品页面上有其他内容,比如登录框、“十大产品”部分、类别列表等,这些内容可能也会在其他页面上使用,也可能不

我正在尝试进入MVC,目前正在阅读wrox professional ASP.NET MVC书籍

到目前为止我有点了解。不是每个URL都指向一个页面,而是指向一个控制器。然后,控制器操作获取数据并决定使用哪个视图


我也明白,如果我有一个类似/product.aspx?id=100的url,那么控制器将获得产品详细信息,并将其与“show product”视图合并

现在有一点我不明白

如果我的产品页面上有其他内容,比如登录框、“十大产品”部分、类别列表等,这些内容可能也会在其他页面上使用,也可能不会在其他页面上使用,那么我如何将它们包括在内,并将它们的代码分开

在经典的aspx模型中,它将是简单的。如果我的前10个产品出现在每个页面上,那么我会将其放在母版页中,但如果它将在某些页面上使用,而不是在其他页面上使用,我更可能将其放在用户控件中

据我目前对MVC的了解,我的产品控制器必须获得前10名产品,任何其他正在生成包含前10名产品的页面的控制器也必须获得前10名产品

困惑。请帮忙

据我目前对MVC的了解, 我的产品控制员必须 获得前10名产品,我们也会 任何其他控制器 生成具有前10名的页面 上面有产品

不一定。您可以将母版页与MVC结合使用,也可以使用部分来划分可重用的视图内容

这是一篇关于使用Partials的好文章。

此外,在您的前10个产品示例中,您可以通过子操作渲染:

[ChildActionOnly]
public ActionResult GetTopTenProducts() 
{
    var products = db.GetTopProducts(10);
    return View(products);
}
然后,您将拥有一个名为“GetTopProducts.ascx”的局部视图(.ascx),该视图将在调用getTopInProducts()操作时呈现。然后在您的母版页中,或者在任何您希望显示前10名列表的地方,您可以这样称呼它:

<% Html.RenderAction("GetTopTenProducts") %>

你很接近了

您只是忘记了控制器是一个可以从基类继承的类

您可以创建一个处理检索前十名产品的基本控制器类,然后让任何需要该功能的控制器从该基类继承

然后创建一个母版页,该母版页使用局部视图呈现传递给视图的前十个产品(从基本控制器)


…瞧!无代码重复。

请不要忘记,在ASP.NET MVC中,您仍然可以使用MasterPage。使用特定于ASP.NET MVC 2,您可以使用RenderAction显示这10个产品,RenderAction可以从您选择的任何控制器渲染操作


除此之外,您还应该了解PartialView。

您可以使用母版页,在MVC中,部分视图与用户控件同义。母版页之间的差异没有相应的控制器。你可以用两种方法中的一种来解决问题

  • 使用局部视图时,可以 传一个模型进去

    <%= Html.RenderPartial("PartialView",Model) %>
    
    
    
  • 您只需在局部视图中使用代码括号
    即可

  • “如果我有像/product.aspx?id=100这样的url”-你没有。:)暂停阅读,开始编码,然后你就明白了……:)bzlm,说得好。产品/100谢谢,听起来Renderaction和PartialView就是我想要的。我得多读书。