- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
主要问题:是否有更好的方法来完成创建可重用控件?
因此,我们的想法是制作一个分页控件,从而基本上不再需要在多个 View 上输入几乎相同的标记。它正在采取这个:
<%= Html.ActionLink("First", "Details", new RouteValueDictionary(new { parentForumId = Model.TopicId, pageNumber = Model.FirstPage, amountToShow = Model.AmountToShow }))%>
|
<%= Html.ActionLink("Previous", "Details", new RouteValueDictionary(new { parentForumId = Model.TopicId, pageNumber = Model.PreviousPage, amountToShow = Model.AmountToShow }))%>
|
<%= Html.ActionLink("Next", "Details", new RouteValueDictionary(new { parentForumId = Model.TopicId, pageNumber = Model.NextPage, amountToShow = Model.AmountToShow }))%>
|
<%= Html.ActionLink("Last", "Details", new RouteValueDictionary(new { parentForumId = Model.TopicId, pageNumber = Model.LastPage, amountToShow = Model.AmountToShow }))%>
然后把它变成这样:
<%= Html.Pager("View", "Controller", "RouteName", Model, new Dictionary<String, Object> { {"parentForumId", Model.ParentForumId}}, " ") %>
如您所见,我传入了所需的 View 、 Controller 、路由名称、模型和用于将请求变量添加到链接的 url 的字典。
我发现我必须为 HtmlHelper 类创建一个扩展方法,并且基本上采用 ASP.Net 中的完整类(具有像 CreateChildControls 这样的好方法)并将其全部塞入一个主要方法中,该方法返回一个字符串。
这是执行此操作的首选方法吗? ASP.Net 方式的一个好处是对类进行标记,因为您拥有将标记属性转换为类属性的 html 标记。它通常用于更清晰的标记,但不可否认是“假”html。在这种情况下,我有一个方法可以将一英里长的签名抽出 html。由于我没有基本的 WebControl 类,我制作的每个控件都必须具有具有相同基本需求的方法调用,例如 CssClass 或 ID。
话虽这么说,我想我可以传入一个属性字典,因为 HtmlHelper.GenerateRouteLink无论如何我正在使用的方法调用一个,但这看起来真的很乱。
有更好的方法吗?
最佳答案
首先,它都是 ASP.NET...一个是 MVC,另一个是 WebForms。当您一直说“ASP.NET 方式”时,我花了几秒钟才意识到您在说什么。 :P
MVC 的想法是您的 View 是“愚蠢的”,除了呈现数据的绝对骨架基础之外没有任何实际行为。在 WebForms 中, View 与呈现它们和处理 View 事件的行为紧密相关。这虽然方便,但使得 WebForms View 很难进行单元测试,因为 View 内容和行为是链接的,有时是混合的。
MVC View 使用 HtmlHelper 和 AjaxHelper 之类的东西的原因是尽可能将行为与 View 分开。与 WebForms 中的用户或服务器控件不同,您可以对 Html.Pager 扩展方法进行完全单元测试,因为逻辑是纯代码,无需混合这些 UI 问题或链接到一堆不可测试的 UI 级别类型。同样的一般规则适用于 MVC Controller ......它们只是代码,没有链接到事件或类似的东西。
它在短期内可能不太方便,因为您目前已经习惯了旧的 WebForms 做事方式。不过,给自己一些时间,您可能会开始意识到 MVC 首选的处理方式带来的好处。在 HtmlHelper 上编写 Pager 扩展方法确实是使用 MVC 做事的首选方式。
至于一英里长的签名位...搜索(试试 Bing.com!)流畅的样式界面和 HtmlHelper。流畅的风格开始在像 MVC View 这样的环境中占有一席之地,在这些环境中,您可能会拥有巨大的签名。一般的想法是基于方法链,有点像 jQuery,并且可以将那些长签名缩短为一系列更短和更有意义的链式方法调用,这些方法调用设置你的 html 助手,最后调用 .Render 方法或其他东西相似的。
关于asp.net-mvc - ASP.Net MVC : Creating custom controls kind of messy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987879/
我正在用KIND测试K8。。我创建了集群:。现在我想用sudo Kind删除集群来删除这个集群,但得到的是:。但是当我转到路径时,我看不到文件:。配置文件:。另外,当调用命令sudo种类删除集群--名
我在用kind测试k8。我创建了集群:。现在我想用sudo Kind删除集群来删除这个集群,但得到的是:。但当转到路径时,我没有看到文件:。配置文件:。另外,当调用命令sudo种类删除集群--名称节点
我在 Haskell 中为日期结构派生 Typeable1 实例时遇到问题。 这是我的代码: {-# LANGUAGE StandaloneDeriving #-} {-# LANGU
我最近从Kubernetes 1.2.0升级到Kubernetes 1.3.0,现在当我尝试开始工作时遇到以下错误: $ kubectl create -f pijob.yaml unable to
当我创建这样的子图时: import pandas as pd import numpy as np import matplotlib.pyplot as plt import itertools
我有一个名为 firstperiod 的 pandas 数据框和一个名为 megaball 的列。 megaball 的取值范围是 1 到 25,这行代码: print firstperiod.meg
我有一个数据库列:。如何使其仅允许Kind。未指定?。当我插入以下内容时,出现以下错误:。我见过的每个解决方案都是使用Npgsql.EnableLegacyTimestampBehavior。但是,这
我有一个数据库列:。如何使其仅允许Kind。未指定?。当我插入以下内容时,出现以下错误:。我见过的每个解决方案都是使用Npgsql.EnableLegacyTimestampBehavior。但是,这
两个reflect.Type接口(interface)和reflect.Value type 实现相同的 Kind() 方法签名,假设我们有一些值对象 v := reflect.ValueOf(x)
到目前为止,我已经尝试了以下代码: # Import to handle plotting import seaborn as sns # Import pyplot, figures inline,
我正在尝试为我的 kubernetes 集群设置一个 kind 集群。不幸的是,它在编写节点时准备好节点后失败了。我将附上输出和一些信息。提前感谢您的帮助! 干杯 错误 $ kind create c
当我尝试 Haskell 类型并尝试获得 -> 类型时,结果出现了: $ ghci ... Prelude> :k (->) (->) :: ?? -> ? -> * Prelude> 而不是预期的*
我想将reflect.Kind作为实现接口(interface)的类型的reflect.Interface,但其实现基于原始类型:type id string 对此问题的另一种答案可能是如何在调用 K
运行我的项目 ng build --prod --base-href="./" 得到下面的错误信息 ERROR in ./node_modules/ng-multiselect-dropdown/fe
我已经阅读了Wikipedia文章,并搜索了明显的地方,但是我陷入了困境。有人可以简单地告诉我什么是实物吗?它是干什么用的 ? 斯卡拉的例子最受赞赏 最佳答案 简而言之:一种类型就是类型,值就是类型。
我一直在思考我正在处理的库中的一个设计问题,我意识到使用存在类型可能允许我以一种简化库的许多部分的方式更改我的设计。但是,我似乎无法让它正常工作。 在我看来,myBuilder 符合 MultiSig
我有这些类型: SomeTypeClass 具有一个类型参数 kind * => * => * 的更高类型 trait SomeTypeClass[P[_, _]] { def test[F[
我想要获取文件的“Kind”查找器。例如,对于文件“foo.css”,我想要字符串“CSS样式表”。 到目前为止,我正在做这样的事情: NSURL *fileURL = [[NSURL alloc]
我遇到了这样一种情况,我的代码可以从使用 Functor 中受益。和 Applicative - 类似抽象,但用于类型 (* -> *) -> * .可以使用 RankNTypes 定义更高种类的仿函
我读过很多关于类型种类、更高种类的类型等等的有趣的东西。默认情况下,Haskell 支持两种类型: 简单类型:* 类型构造函数:* → * 最新 GHC 语言扩展 ConstraintKinds添加了
我是一名优秀的程序员,十分优秀!