小编Ben*_*esh的帖子

将ASP.Net MVC的单页添加到现有的Web窗体应用程序中?

我一直在浏览这个网站,我看过一些关于如何从Web窗体"迁移"到MVC的帖子......但作为一个开发人员在一个复杂的Web窗体应用程序上工作,我根本就没有时间完全迁移.我想要做的是使用MVC添加所有新内容,并在我有时间(和/或也有)时迁移旧内容.我看到MVC对我的环境有很多好处.

另外需要注意的是,目前所有Web窗体.aspx都存在于根目录中,并且我有一些旧学校URL重写设置(例如:"/id/123/s/whatever/PageName.aspx" - >" /PageName.aspx?id=123&s=whatever")可能使事情复杂化.

还有一个使用MasterPages的模板系统可能会带来挑战.这些与MVC处理方式不同吗?

此时我还没有添加任何与我的应用程序相关的MVC.

那么,我如何一步一步地将我的第一个模型,视图和控制器添加到现有的Web窗体应用程序中?

编辑:

我还发现这篇文章详细介绍了我需要做的事情:http://blogs.imeta.co.uk/MGodfrey/archive/2009/03/31/663.aspx

不幸的是它仍然没有用.我想因为我有一个网站,而不是一个Web应用程序.(换句话说,我的类位于App_Code目录中).

asp.net asp.net-mvc

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

要么验证,要么验证

我想使用ComponentModel DataAnnotations验证两个属性中至少有一个属性值.我的模型看起来像这样:

public class FooModel {
   public string Bar1 { get; set; }
   public int Bar2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

基本上,我想验证FooModel,以便需要Bar1 Bar2.换句话说,您可以输入一个,或另一个,或两者,但您不能将它们都留空.

我希望这对于服务器端和不显眼的客户端验证都有效.


编辑:这可能是重复,因为这看起来类似于我想要做的

c# validation unobtrusive-validation asp.net-mvc-3

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

如何在ASP.Net-MVC中创建SEO友好的URL

我正熟悉ASP.Net-MVC,我试图完成我过去用webforms和其他功能完成的一些常见任务.关于我需要做的最常见的任务是创建SEO友好的URL,这在过去意味着做一些url重写以在目录路径中构建查询字符串.

例如:www.somesite.com/productid/1234/widget

而不是:www.somesite.com?productid=1234&name=widget

在ASP.Net-MVC中我用什么方法来完成这个?

我一直在四处寻找,而我所发现的就是这个,要么我不能正确理解,要么我没有真正回答我的问题:

ASP.NET MVC的SEO URL

asp.net-mvc

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

我的HTML输出推荐用于IE7/IE8/FF3 +的DOCTYPE是什么?如何在Visual Studio中更新我的HTML验证以反映该更改?

我注意到Visual Studio默认DOCTYPE为XHTML 1.0 Transitional.这似乎没问题,但我认为这更像是"第6代"浏览器的标准.我们现在处于第7代和第8代浏览器中,我想知道我应该在HTML中添加什么DOCTYPE.

在相关说明:有没有办法将其他DOCTYPE添加到Visual Studio 2008中的HTML验证?工具>选项>文本编辑器> HTML>验证

html xhtml doctype visual-studio-2008

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

从NetworkStream读取BinaryFormatter序列化对象的最有效方法?

我有一个应用程序,通过套接字连接发送不同大小的可序列化对象,我希望它尽可能地扩展.也可能有数十甚至数百个连接.

  1. NetworkStream来自一个持续侦听传入消息的TcpClient.
  2. 我不想用标准的NetworkStream.Read()来阻塞一个线程.这需要扩展.我只假设Read()块,因为这是这类类的非常标准的行为,并且在类上有一个ReadTimeout属性.
  3. 我不确定BinaryFormatter是否只使用Read(),或者它是否为我做了一些Async的东西.我的猜测是否定的.
  4. TcpClient需要获取消息,将其读取到最后,然后返回监听消息.

所以似乎有太多的方法可以给这只猫留下光彩,而且我不确定什么才是最有效的.我是:

只需使用BinaryFormatter读取NetworkStream?

var netStream = client.GetStream();
var formatter = new BinaryFormatter();
var obj = formatter.Deserialize(netStream);
Run Code Online (Sandbox Code Playgroud)

或者使用新的异步/等待内容做一些魔术:

using(var ms = new MemoryStream()) 
{
   var netStream = client.GetStream();
   var buffer = new byte[1028];
   int bytesRead;
   while((bytesRead = await netStream.ReadAsync(buffer, 0, buffer.length)) > 0) {
      ms.Write(buffer, 0, buffer.Length);
   }
   var formatter = new BinaryFormatter();
   var obj = formatter.Deserialize(ms);
}
Run Code Online (Sandbox Code Playgroud)

或者与上面类似,只利用新的CopyToAsync方法:

using(var ms = new MemoryStream()) 
{
   var netStream = client.GetStream();
   await netStream.CopyToAsync(ms); //4096 default buffer.
   var …
Run Code Online (Sandbox Code Playgroud)

c# networkstream async-await c#-5.0 .net-4.5

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

Chrome中SignalR和跨域请求的问题27

编辑:这显然只是Chrome中的一个问题,它在FF和IE中运行良好

Chrome版本:27.0.1453.116

我在localhost:13371上有一个简单的JS/HTML站点,我正在尝试访问localhost:13371上的SignalR中心.

无论何时发出请求,我都会收到以下错误:

XMLHttpRequest无法加载http://localhost:13370/signalr/hubs/negotiate?_=1372338722032.原产地http://localhost:13371不被访问控制允许来源允许的.

我已经尝试过了:

  • 在SignalR上启用跨域Application_Start:

    RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
    
    Run Code Online (Sandbox Code Playgroud)
  • 在SignalR服务器的Web.Config中启用跨域:

    <system.webServer>
       <httpProtocol>
         <customHeaders>
           <clear />
           <add name="Access-Control-Allow-Origin" value="*" />
           <add name="Access-Control-Allow-Methods" value="*" />
           <add name="Access-Control-Allow-Headers" value="*" />
         </customHeaders>
       </httpProtocol>
    </system.webServer>
    
    Run Code Online (Sandbox Code Playgroud)
  • 在JavaScript中设置信号器中心的连接URL:

    $.connection.hub.url = 'http://localhost:13370/signalr/hubs';
    
    Run Code Online (Sandbox Code Playgroud)
  • 在jQuery中启用CORS:

    $.support.cors = true;
    
    Run Code Online (Sandbox Code Playgroud)
  • 手动设置响应头Application_BeginRequest:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
    
        if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
        {
            //These headers are handling the "pre-flight" OPTIONS call sent by the browser
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, …
    Run Code Online (Sandbox Code Playgroud)

asp.net-mvc iis-7 cross-domain signalr

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

MVC视图在IIS 7.5中返回404

我一直试图弄清楚为什么我的观点在我的暂存环境中返回404,而不是我的开发环境.

  • Windows Server 2008 R2
  • IIS 7.5
  • 肯定安装了MVC 2 Beta.

Global.asax中的第一个Route条目如下:

        routes.MapRoute(
            "FindStore",
            "FindStore",
            new { controller = "FindStore", action = "Index" });
Run Code Online (Sandbox Code Playgroud)

所有视图都存在于适当的目录中.

基本上如果我去http:// StagingServer/FindStore我得到404错误.我见过的每个其他答案都与IIS 6有关,我没有运行.

asp.net-mvc routing iis-7 http-status-code-404

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

如何使用CLR Profiler调试在IIS 7.5上运行的ASP.Net应用程序?

我的ASP.Net应用程序存在内存泄漏问题.我尝试过WinDbg,IMO显示的内容大多无用,我正在尝试让CLR分析器工作.

我的问题是每次我尝试"配置文件ASP.NET"它只是快速闪烁两个控制台我无法读取它们,然后CLR Profiler的标题栏说"启动IIS.出现错误2".

  • IIS 7.5
  • Windows Server 2008 R2 Enterprise

其他要知道的事情:

我尝试以管理员身份运行CLR Profiler.

我真的需要确定我的内存泄漏的来源,任何帮助将不胜感激.

编辑:

我已经看过了:http: //msdn.microsoft.com/en-us/library/ff650691.aspx

asp.net memory-leaks clrprofiler

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

如何使用指令在控制器上的元素上切换幻灯片动画?

我对以下情况感到困惑.假设我有一个带行的表.当用户单击表中的按钮时,我希望用户表单向下滑动jQuery并显示包含所选行值的表单.以下是我目前正在做的事情,这没有多大意义:

视图

<tr ng-click="setItemToEdit(item)" slide-down-form>
Run Code Online (Sandbox Code Playgroud)

...

<form>
   <input type="test" ng-model={{itemToEdit.Property1}} >
   <button ng-click=saveEditedItem(item)" slide-up-form>
<form>
Run Code Online (Sandbox Code Playgroud)

控制

$scope.itemToEdit = {};

$scope.setItemToEdit = function(item) {
    $scope.itemToEdit = item;
});

$scope.saveEditedItem = function(item) {
   myService.add(item);
   $scope.itemToEdit = {};
}
Run Code Online (Sandbox Code Playgroud)

指令 - 上滑/下滑

var linker = function(scope, element, attrs) {
    $(form).slideUp(); //or slide down           
}
Run Code Online (Sandbox Code Playgroud)

似乎我的指令和我的控制逻辑太过断开了.例如,如果存在保存错误会发生什么?表单已隐藏,因为slideUp事件已完成.在这种情况下,我很可能想要阻止slideUp操作.

我只使用AngularJS大约一个星期,所以我确信有些东西我不见了.

angularjs

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

端口上的NodeJS套接字*和*路径?

我想在一个URI上设置一个基本套接字ws://localhost:1234/mysocket(模仿用Java创建的另一个环境),到目前为止我只能设置它ws://localhost:1234/ 如何才能让它在一个特定的URL上托管而不仅仅是一个主机和港口?

这只是文档中的基本NodeJS套接字:

var net = require('net');

var server = net.createServer(function (socket) {
  socket.write('Echo server\r\n');
  socket.pipe(socket);
});

server.listen(1337, '127.0.0.1'); // <-- not sure what to do here?
Run Code Online (Sandbox Code Playgroud)

我特别不要求涉及Socket.IO的解决方案.

编辑

我觉得我可能真的需要在我的套接字服务器前设置一个代理?但这似乎有点奇怪.

sockets node.js

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