问题列表 - 第45011页

将遗留专有Web应用程序重写为MVC3/Entity-Code-First

几个月来,我发布了一些关于ASP.NET应用程序和数据库抽象层结构的问题,以便重写(从头开始)一个遗留的Web应用程序.我最近偶然发现了MVC3/Entity-Code-First,花了一些时间,它已经爱上了它的工作方式,如何抽象出来,我正在寻找任何借口来使用它!

遗留应用程序是一个C++/CLI窗口服务,它生成它自己的HTML(非常老派的HTML,其中CSS只用于颜色和表格比比皆是),并且界面与业务逻辑紧密耦合.基本上,任何事情都会有所改善.

然而,也许这是因为我还没有花足够的时间与MVC,我有一些唠叨的疑虑,并想知道你们中的一些MVC-Pros是否可以在我的方向上挥发他们的经验.

  • 遗留应用程序使用自定义控件(它们自己的形式)将组合框绑定到数据,并根据另一个组合框中的选择动态重新填充相关组合框.在ASP.NET中,这个问题很容易回答,因为只需asp:DataList在页面上抛出控件,将其绑定到数据源即可.一些简单的代码允许您过滤所选值上的其他组合框.在ASP.NET中,实现另一个数据列表也很容易,甚至以这种方式自动化依赖数据(这将很好地模仿遗留应用程序的行为).我似乎无法在MVC中找到自定义控件的概念,尽管我认为这种东西是由jQuery调用处理来获取数据并将其放入组合框中.但是每个包含一个组合框的每个组合框都能完成吗?这是一个部分视图的情况,传递适当的参数,或者这只是愚蠢的?

  • 我想这更多地涉及实体框架比MVC,但大部分我在网上找到的例子和教程,执行LINQ查询返回对象的集合来显示,比如这个,从MvcMovie例如:

    public ActionResult Index()
    {
        var movies = from m in db.Movies
                     where m.ReleaseDate > new DateTime(1984, 6, 1)
                     select m;
    
        return View(movies.ToList());
    }
    
    Run Code Online (Sandbox Code Playgroud)

    然后使用@foreach视图中的循环进行渲染.这一切都很棒.遗留应用程序有一个浏览页面,供系统的所有其他区域使用(超过50个).它通过检查为登录的用户定义的列顺序来执行此操作,展平任何外键(以便显示外部表上的字段而不是非用户友好的主键值)并允许用户应用自定义过滤器到任何列.它也适用于行数超过100k的表.如何使用Entity-framework和views编写类似内容?在ASP.NET中,我可能通过动态生成某种网格视图并让它自动生成列并应用过滤器来解决这个问题.这似乎可能是我在MVC中的更多工作.我错过了什么?

  • 遗留应用程序具有多个操作大型数据集的操作.现在因为它是一项服务,它可以启动这些线程而不必担心被关闭.我在SO上的一个问题是关于静态管理器的存在以及AppPool回收的引入,但我已经决定使用辅助服务是一个不错的选择.也就是说,遗留应用程序将更新语句应用于大型记录组而不是单行.如果没有为绕过正常模型的数据库编写自定义SQL,这是否可以使用Entity-Framework?我希望我不必做这样的事情(不是我想,这只是例如)

    var records = from rec in myTable
                  where someField = someValue
                  select rec;
    foreach(rec in records)
        rec.applyCalculation();
    db.SaveDbChanges();
    
    Run Code Online (Sandbox Code Playgroud)

    我怀疑这可能需要花费很多时间,而遗留应用程序只会:

    UPDATE myTable
    SET field1 = calc
    WHERE someField = someValue
    
    Run Code Online (Sandbox Code Playgroud)

    因此,我并不完全清楚我们如何以这种方式使用我们的模型.

  • 遗留应用程序在布局中有一些数据面板,可以随身携带任何页面.看看Stackoverflow,我发现了这个问题,这意味着每个视图都需要将这些信息传递给布局?是这样,还是有更好的方法?理想情况下,我希望我的布局能够访问特定的模型/存储库并在侧面板中显示数据.添加到每个视图页面可能非常重复并且容易出错.更不用说如果我需要修改某些东西需要的时间.部分视图会在这里完成,但我再次不确定如何在布局页面上将模型传递给它.

  • 最后,在安装Ef-Code-First之后,我很失望地发现一个非常好的属性,SourceName还没有进入.这对于遗留表/列的映射非常好,我不完全确定为什么它在这一点上被遗漏了(至少,我的intellisense说它不存在!)有没有人知道这可能会发生什么?我可以在没有它的情况下做一段时间,但最终它会非常有用.

对不起,这是一个很长的问题.经过ASP.NET和MVC3的多年调查工作,我真的很想使用MVC3!

c# asp.net asp.net-mvc entity-framework ef-code-first

7
推荐指数
1
解决办法
867
查看次数

MVC或休息或两者

我正在设计基于Web的用户界面的服务器端,这将非常JavaScript.

我最初想过使用MVC解决方案,但现在我想我想使用基于REST的解决方案,如Jersey或Restlets.

这通常是一种或另一种类型的决定,还是它们可以是一个综合解决方案?

谢谢,迈克

javascript java architecture rest model-view-controller

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

Python字典中的值可以有两个值吗?

对于测试程序,我正在制作一个简单的NFL模型.我想将一个记录(胜负)分配给一个团队作为字典中的值?那可能吗?

例如:

afcNorth = ["Baltimore Ravens", "Pittsburgh Steelers", "Cleveland Browns", "Cincinatti Bengals"]
Run Code Online (Sandbox Code Playgroud)

如果乌鸦队有13胜3负,那么这两个值的字典是否可以解释?如果是这样,怎么样?

python dictionary

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

Spree的问题

我正在尝试按照Spree 入门中提到的步骤在我的本地计算机上安装和运行Spree

但是,当我启动服务器时,我收到以下错误:

找不到表'页'

有人可以帮我解决这个问题吗?

ruby-on-rails spree ruby-on-rails-3

0
推荐指数
1
解决办法
2996
查看次数

仅将jQuery click事件绑定到某些按钮

我有一个动态创建各种输入的网站.

我有3个特定的输入,我想在点击时调用JQuery函数.

<input type="button" name="Finish" value="Finish">
<input type="button" name="Update" value="Update">
<input type="button" name="Cancel" value="Cancel"> 
Run Code Online (Sandbox Code Playgroud)

使用此代码:

jQuery(":button").click(function(){
    //Do summat
}):
Run Code Online (Sandbox Code Playgroud)

但是当我只想要上面的3个输入来调用函数时,这使得页面上的所有输入都调用了函数.这可能吗?

uggers

jquery

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

在appcelerator中存储我的数据的位置?

让我们说我们想为Android做一个简单的应用程序,对于这个应用程序,我们想要一些数据.当我在我的电脑本地测试我的例子时,我将它们放在一个json格式的文件中.让我们说应用程序不需要互联网连接,所以我们无法向某个服务器发送请求.

现在如果我移动到Android设备(在我的情况下钛模拟器)我没有服务器,所以我无法获取我的json数据文件.

那秘密是什么?我怎么做这项工作?所有这些本机应用程序如何在没有服务器,没有数据库的情况下工作,而不是一种获取xml或json数据文件的方法?

日Thnx

titanium appcelerator appcelerator-mobile

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

声明性SQLAlchemy在内存表中创建SQLITE

这就是我为应用程序设置数据库的方法(在Flask中):

from sqlalchemy.engine import create_engine
from sqlalchemy.orm import scoped_session, create_session
from sqlalchemy.ext.declarative import declarative_base

engine = None
db_session = scoped_session(lambda: create_session(bind=engine,
                                                   autoflush=False, autocommit=False, expire_on_commit=True))

Base = declarative_base()
Base.query = db_session.query_property()

def init_engine(uri, **kwargs):
    global engine
    engine = create_engine(uri, **kwargs)

    Base.metadata.create_all(bind=engine)

    return engine
Run Code Online (Sandbox Code Playgroud)

如果我连接到已经创建了表的文件数据库,一切正常,但使用sqlite:///:memory:作为目标数据库给我:

OperationalError: (OperationalError) no such table: users u'DELETE FROM users' ()
Run Code Online (Sandbox Code Playgroud)

当你这样查询时:

UsersTable.query.delete()
db_session.commit()
Run Code Online (Sandbox Code Playgroud)

我从单元测试中访问此代码.问题是什么?

谢谢

编辑:

应用程序的工作设置:

app = Flask(__name__)
app.config.from_object(__name__)
app.secret_key = 'XXX'

# presenters
from presenters.users import users

# register modules (presenters)
app.register_module(users) …
Run Code Online (Sandbox Code Playgroud)

python sqlite sqlalchemy declarative

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

如何改进此算法?

我想要实现的是获取美元货币金额,并将其分解为使用每种类型中最少的金额来计算每个账单和硬币的数量.

我匆匆写了这篇文章,它有效,但我觉得它可以改进.此外,我不得不围绕其余部分,因为我得到一个奇怪的结果一旦它得到像(0.13 - (1*0.1)而不是0.3它会出现0.299999995

下面的代码确实有效.

function moneybreak ($amount, $sizebill) {
    // get units of sizecurrency
    $numbills = floor($amount / $sizebill);
    $remainder = $amount - ($numbills * $sizebill);
    $remainder = round($remainder, 2);
    $ret['bills'] = $numbills;
    $ret['remain'] = $remainder;
    return $ret;
}

$amount = 1999.99;
$money = array();
$tmoney = moneybreak($amount, 500);
$money['fivehundred']   = ($tmoney['bills'] > 0) ? $tmoney['bills'] : 0.00;
$tmoney = moneybreak($tmoney['remain'], 100);
$money['onehundred']        = ($tmoney['bills'] > 0) ? $tmoney['bills'] : 0.00;
$tmoney = moneybreak($tmoney['remain'], 20);
$money['twenty']            = ($tmoney['bills'] > …
Run Code Online (Sandbox Code Playgroud)

php currency

0
推荐指数
1
解决办法
203
查看次数

MySQL全文搜索之谜

我们在我们的网站上进行了简单的搜索,使用MySQL全文搜索,由于某种原因,它似乎没有返回正确的结果.我不知道Amazon RDS(我们的数据库服务器所在的位置)或我们请求的查询是否存在某种问题.

这是数据库表的结构:

CREATE TABLE `items` (
  `object_id` int(9) unsigned NOT NULL DEFAULT '0',
  `slug` varchar(100) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`object_id`),
  FULLTEXT KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

这是一个简单的全文搜索查询在这个表和返回的结果:

select object_id ,slug,name from items where MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE) order by name;

+-----------+-----------------------------------+------------------+
| object_id | slug                              | name             |
+-----------+-----------------------------------+------------------+
|  10146041 | us/new-hampshire/dartmouth-skiway | Dartmouth Skiway |
+-----------+-----------------------------------+------------------+
Run Code Online (Sandbox Code Playgroud)

如果我改为使用LIKE,我会得到一组不同的结果:

select object_id,slug,name from items where name LIKE "%ski%" order by name; …
Run Code Online (Sandbox Code Playgroud)

mysql full-text-search

4
推荐指数
1
解决办法
2155
查看次数

检测adblock和javascript

我希望在我的网站上检测广告拦截软件,并要求用户通过重定向来停用广告拦截功能.我发现的唯一方法是使用Javascript.

  1. 还有其他检测方法吗?

  2. 如果没有,我如何检测Javascript是否被禁用并将其重定向到某个页面?

javascript adblock

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