标签: views

我怎样才能避免在asp.net mvc视图中使用无法编写的代码

我发现越来越多的我的asp.net mvc视图开始看起来像我的旧的糟糕的asp代码,我永远无法维护或保持清洁与集成的<%%>和html放在一起.下面我有一个我正在谈论的代码sammple.是否有任何最佳实践或建议的方法来避免这种情况并保持视图更易于维护和可读.

            <td>
                <%
                    bool userRequiresApproval = false;
                    if (!string.IsNullOrEmpty(item.loginName))
                    {
                        MembershipUserCollection membership = (MembershipUserCollection)ViewData["UnapprovedUsers"];
                        if (membership != null && membership[item.loginName] != null)
                        {
                            userRequiresApproval = true;
                        }
                    }
                    bool isLoggedInUserAdmin = false;
                    if (ViewData.ContainsKey("isAdmin"))
                    {
                        isLoggedInUserAdmin = (bool)ViewData["isAdmin"];
                    }
                    if (isLoggedInUserAdmin && userRequiresApproval)
                    {%>
                        <%= Html.ActionLink("View", "Details", new { id=item.Mail_ID })%>, <%= Html.ActionLink("Delete", "GotoDeleteConfirmPage", new { id = item.Mail_ID })%>, <%= Html.ActionLink("Approve", "Approve", new { id = item.Mail_ID })%>
                    <%}
                    else if (isLoggedInUserAdmin)
                    {%>
                        <%= Html.ActionLink("View", "Details", new { …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc views

6
推荐指数
1
解决办法
300
查看次数

SQL选择列名作为值

我有一个包含列名的数据表:

period, Truck, Car, Boat
Run Code Online (Sandbox Code Playgroud)

如果列包含数值,并且句点列是具有1到48的标识列,则有48行.

我想将这个表按到一个格式,我有一个名称列和一个值列以及句号列,例如.

period, NameOfVehicle, Value
Run Code Online (Sandbox Code Playgroud)

我想创建一个orignal表的视图来做到这一点?如何选择列名并将它们和该列中的正确值放入NameOfVehicle和Value列?

sql views

6
推荐指数
1
解决办法
2万
查看次数

isset()或!empty()函数对视图中的所有变量有效吗?

嗨,我正在使用CakePHP,我想知道你们在视图中的所有变量周围放置isset()或!empty()吗?或者我应该依赖数据验证?建议的解决方案是什么?

php cakephp views

6
推荐指数
1
解决办法
8819
查看次数

如何在sql server中优化视图以提高速度

我已经为我的项目创建了视图,现在我想为速度目的优化它们...我如何识别视图可以优化?索引对此有用....

let's say the following example...

    SELECT        dbo.vw_WebInventory.skref AS SaleID, dbo.vw_WebInventory.lot_number AS LotNumber, dbo.vw_WebInventory.Description, 
                             dbo.vw_WebInventory.Image AS HasImage, dbo.vw_WebInventory.Sold, dbo.vw_WebInventory.Withdrawn, dbo.vw_WebTopBids.TopBid, 
                             ISNULL(dbo.vw_WebInventory.Mins_Extend_y, 0) AS BidTimeExtend, dbo.Sale.SaleTypeID, dbo.Sale.ClosingDate, dbo.vw_WebInventory.ExDate, 
                             dbo.vw_WebInventory.CurrDate, CASE WHEN vw_WebInventory.ExDate > ISNULL(vw_WebInventory.LotClosingDate, Sale.ClosingDate) 
                             THEN 1 ELSE 0 END AS ShowBidMessage
    FROM            dbo.vw_WebInventory INNER JOIN
                             dbo.Sale ON dbo.vw_WebInventory.skref = dbo.Sale.SaleID LEFT OUTER JOIN
                             dbo.vw_WebTopBids ON dbo.vw_WebInventory.skref = dbo.vw_WebTopBids.CatNumber AND dbo.vw_WebInventory.lot_number = dbo.vw_WebTopBids.LotNumber
Run Code Online (Sandbox Code Playgroud)

其中vm_webTopBids和vm_WebInventory是两个不同的视图......是否可以优化此视图?

sql t-sql performance sql-server-2005 views

6
推荐指数
2
解决办法
3万
查看次数

如何测试Asp.Net MVC视图是否无异常呈现?

我在我的申请中提出了一个小问题.

我将主应用程序的命名空间更改为MyApp.Models,MyApp.ViewModels以便命名空间总体上不那么混乱(因为该命名空间只有视图模型而没有业务模型).我更改了所有可以找到的引用,包括在我的视图中,我重新运行了所有单元测试并完成了应用程序,一切似乎都很好.

几天后,我收到一份报告,说明注册页面出现时出错了.看完之后,我忘记在注册页面上修复命名空间,因此无法编译视图.

这让我担心.单元测试的全部要点,以及Asp.Net MVC最大的诱惑之一,就是能够通过自动单独测试所有内容来确保您的应用程序,以便您在修改时立即知道系统的某些部分.现在看来,这似乎是一个重大漏洞.

为了清楚起见,我知道您可以打开预编译视图.但是,我不喜欢这个选项,因为它一直都不是一个好主意(因为它使得编译新的构建非常非常慢),并且有一个单独的配置方案,这意味着它取决于用户记得尝试使用该配置方案进行编译以检查视图编译错误.

这也完全绕过检查可能发生的运行时错误.例如,假设您更改了强类型视图所期望的视图模型.然后,您将更新单元测试以确保Controller.Action()返回具有正确视图模型类型的视图结果,但这不会确保实际视图已针对新视图正确更新,但此方案将导致运行时异常.这是一个容易发生的情况,特别是因为如果两个视图模型中的差异仅在视图中使用的部分中看到.

可能导致视图中的运行时异常的代码的其他示例是不正确的循环(可能由视图模型中的更改引起),检查用户角色的代码(因此仅对具有凭据的用户显示按钮),不正确的强制转换(例如,用于转换收集到选择列表中),对集合进行排序的错误代码(如何在显示中对集合进行排序可视为视图问题,而不是控制器或视图模型问题),如果用于文件位置的字符串无法正常工作(T4MVC与某些东西没有很好的集成,比如Telerik的脚本注册系统)等......

我看到它的方式,有很多东西可以导致在渲染视图的过程中发生异常,我似乎无法找到任何方法来创建单元或集成测试来确定何时发生.如果我不必检查每一页以确保我错过了标准单元测试应该能够捕获的内容的编译时间或运行时错误,我会感觉更舒服.

我有什么选择呢?

我宁愿远离WaTiN和其他GUI测试工具,因为我对页面的实际显示不感兴趣,我只想知道视图是否呈现或是否发生异常并且不需要开销Watin为每个测试运行一个IE实例(我也认为如果我以后继续进行集成会导致问题).

asp.net-mvc integration-testing unit-testing views

6
推荐指数
1
解决办法
809
查看次数

"给定的密钥不在字典中." 添加与实体的关联时

实体图

使用EF6/VS 2013,我创建了一个ADO.NET实体数据模型.此模型使用存储在SQL Server中的三个视图,以便从现有系统以适当的形式准备数据.一个用户(vw_Users),一个用于角色(vw_Roles)和交叉引用/关联视图(vw_UserRoles).

映射用户和角色实体时,应用程序将编译并执行而不会出现问题.但是,当我添加用户和角色之间的关联并将其映射到vw_UserRoles视图时,我得到一个内部异常的EntityCommandCompilationException,KeyNotFoundException {"字典中没有给定的密钥."}.

An exception of type 'System.Data.Entity.Core.EntityCommandCompilationException' occurred in mscorlib.dll but was not handled in user code
Additional information: An error occurred while preparing the command definition. See the inner exception for details.
Run Code Online (Sandbox Code Playgroud)

对我来说,这只是一个错误,但我是很多EF的新手,它可能与连接视图有关.出于兴趣,我实现了这个技巧,将视图视为一个表,但它没有任何区别.

更新#1:我使用新的SQL Server数据库创建了一个新的Web应用程序.我创建了基础表,其中包含关系和每个表的视图.当我基于表创建实体模型时,我没有任何问题 - 即使是关联.当我从视图中创建模型时,我得到了KeyNotFoundException.注意:我已更正了密钥,并在第二个基于视图的模型上添加并映射了关联.您可以从这里下载项目 - http://sdrv.ms/1eZ7ytp

更新#2:我已将此记录为MS @ Codeplex的问题 - https://entityframework.codeplex.com/workitem/1777

我仍然难以接受这一点,我真的很想用一系列观点完成这个.有什么想法吗?请....?


完全例外:

System.Data.Entity.Core.EntityCommandCompilationException was unhandled by user code
  HResult=-2146232005
  Message=An error occurred while preparing the command definition. See the inner exception for details.
  Source=EntityFramework
  StackTrace:
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition..ctor(DbProviderFactory storeProviderFactory, DbCommandTree commandTree, …
Run Code Online (Sandbox Code Playgroud)

entity-framework views

6
推荐指数
1
解决办法
1万
查看次数

Django 1.8的inspectdb命令根据文档没有看到PostgreSQL视图

我有一个带有PostgreSQL数据库的Django 1.8应用程序.我从命令行运行django inspectdb来检查视图的模型,但视图不会显示在模型输出中.

这是版本输出:

17:36 $ python well/manage.py --version
1.8.2
Run Code Online (Sandbox Code Playgroud)

这是psql看到的:

\dv
                List of relations
 Schema |             Name              | Type |  Owner  
--------+-------------------------------+------+---------
 public | hospitalizations_over_30_days | view | dwatson
 public | interval_30_days              | view | dwatson
(2 rows)
Run Code Online (Sandbox Code Playgroud)

从django 1.8.2文档:

New in Django 1.8:
A feature to inspect database views was added. In previous versions, only tables (not views) were inspected.
Run Code Online (Sandbox Code Playgroud)

如何让PostgreSQL视图出现在Django 1.8.2 inspectdb输出中?

python django postgresql views

6
推荐指数
2
解决办法
1455
查看次数

PresentModalViewController或addsubview?

嗨,我正在xcode 3.2.3中编写应用程序.我想做的就是切换到另一个视图,但我不确定最好的方法.我可以用这两种方式做到这一点......

PreferencesViewController *screen = [[PreferencesViewController alloc]initWithNibName:nil bundle:nil];

screen.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[self presentModalViewController:screen animated:YES];

[screen release];
Run Code Online (Sandbox Code Playgroud)

或使用......

PreferencesViewController *screen = [[PreferencesViewController alloc]initWithNibName:nil bundle:nil];

[UIView beginAnimations:nil context:NULL];

[UIView setAnimationDuration:1.0];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];

[self.view addSubview:screen.view]; 

[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

我对这两种方法都有一些问题.如果我使用presentModalViewController并在PreferencesViewController中模拟内存警告我的应用程序崩溃.第二种方法不是这种情况.然而,第二种方法使我的按钮在翻转动画期间看起来很奇怪.

有人可以告诉我什么是错的和/或建议我哪种方法是正确的.

谢谢

views flip addsubview presentmodalviewcontroller

5
推荐指数
1
解决办法
1598
查看次数

Drupal 7视图,如果没有定义第二个过滤器,则2个上下文过滤器不起作用

我在找工作板.我想显示一个URL看起来像/ jobs/region/category的视图.我使用路径"/ jobs /%/%"配置了我的视图.我创建了2个"内容:具有分类术语ID"上下文过滤器.当我预览视图时,它正常工作.例如,当我访问http://www.mysite.com/jobs/chicago/medical页面时,它也正常工作,我有芝加哥地区的医疗工作列表.但是,如果我访问http://www.mysite.com/jobs/chicago,我会收到"找不到页面".

它将第二个过滤器的"当过滤值不在URL中时"设置为"显示指定字段的所有结果".我也尝试提供默认值,但没有任何工作.

我读了几个类似问题的主题但到目前为止我找不到任何解决方案.

谢谢

drupal views

5
推荐指数
1
解决办法
5397
查看次数

Codeigniter查看和回声

我有一个函数,用于处理codeigniter中网页的侧栏.

如下 :

function process_sidebar()
{
$this->load->view("first_access"); // ------------(1)
$this->load->view("second_access");// --------------(2)
echo "Here i want to show some data after loading view second_access"; //pls note here --(3)

$this->load->view("third_access"); // --------------------(4)
$this->load->view("fourth_access"); //-------------------------(5)

}
Run Code Online (Sandbox Code Playgroud)

请检查订单号,但问题是codeigniter没有保留订单.

它最后呈现视图并echo首先显示该部分..

我怎么能克服这个?

谢谢.

php codeigniter views echo

5
推荐指数
1
解决办法
8722
查看次数