小编Tra*_*s J的帖子

构建视图模型的代码应该放在哪里?

在asp.net的MVC3中构建视图模型时,代码应该在哪里实例化该视图模型的对象?我现在主要在控制器中执行它,除了查询数据库的代码.这是代码中的一个例子:

查看型号:

public class WorkListVM
{
    //list for employees
    [Display(Name = "Select A Employee")]
    [Required]
    public int? EmployeeId { get; set; }
    public GenericSelectList EmployeeList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器代码:

        //build view model
        var vm = new WorkListVM();

        //build employee list
        vm.EmployeeList = new GenericSelectList(0,"-- Select Employee --");
        var employees = new List<Employee>();
        using (var gr = new GenericRepo<Employee>())
        {
            employees = gr.Get().ToList();
        }
        foreach(var employee in employees)
        {
            var gl = new GenericListItem();
            gl.Id = employee.EmployeeId;
            gl.DisplayFields = …
Run Code Online (Sandbox Code Playgroud)

c# viewmodel asp.net-mvc-3

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

有没有比用@if()更好的方法在剃刀中动态添加css

我可以在这里优化班级作业吗?我必须在很多不同的地方这样做,并试图弄清楚如何减少它...复制粘贴 - 内嵌/内联.

@foreach(var m in Model.ObjectList)
{
 <td @if(m.RandomObject.isFlagged){
     <text>class="flagged"</text>
     }
 >
  @m.RandomObject.Name @m.RandomObject.Description
 </td>
}
Run Code Online (Sandbox Code Playgroud)

请注意,不同位置的每个ObjectList都有不同的RandomObjects.

我想这也会奏效,但似乎仍然不是最佳做法:

<td class="flagged@(m.RandomObject.isFlagged)">...
Run Code Online (Sandbox Code Playgroud)

然后有css定义 .flaggedtrue

css optimization razor

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

.GetProperties()的大O

如果有n个属性,那么.GetProperties O(n)的Big-O还是反射中涉及的过程增加了复杂性?

假设有这个定义的类:

public class Reflector
{
 public string name { get; set; }
 public int number { get; set; }
 public bool flag { get; set; }
 public List<string> etc { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后进行此调用:

var reflect = new Reflector();
PropertyInfo[] properties = reflect.GetType().GetProperties();
Run Code Online (Sandbox Code Playgroud)

什么是时间复杂度,即Big-O .GetProperties()?考虑到有4个属性,这只需要4次迭代还是比它更复杂?或者,是否O(1)具有一些标准的复杂性集到达列表 - 这似乎仍然是O(n)只是为了构建属性数组?

c# reflection getproperties

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

哪个jQuery事件处理程序适用于页面加载?

我有一个简单的页面,只是尝试将加载事件附加到文档.我不确定在jQuery中使用哪个事件处理程序来执行此操作.我试着$()$(document).ready.load,但既不似乎在正确的时间运行代码.我应该使用.on,.live?或者有什么我做错了.这是一个示例:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
    $(document).ready(
        showWidth()
    );
    function showWidth() {
        alert($('#textTitle').width());
    }
</script>
</head>
<body>
<div class="page">
        <div id="title">
            <h1 id="textTitle">yo</h1>
        </div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我运行此警报显示null.

javascript jquery onload-event

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

如何在javascript脚本标记中使用剃刀for循环?

生成的错误是"条件编译已关闭".

来自MSDN的条件编译黑客很普遍但是失败了.

有几个像这样的问题: 在Razor中关闭了条件编译?

他们都指出了答案:

/*@cc_on @*/
Run Code Online (Sandbox Code Playgroud)

从MSDN上看到的文章:

http://msdn.microsoft.com/en-us/library/5y5529x3(v=vs.90).aspx

但是,这个hack很失败,或者我似乎无法实现它.尾随@*导致.cshtml文件中的剩余代码被注释掉.此外,@cc_on给出错误"cc_on在当前上下文中不存在".

这是在.cshtml文件中测试的一段代码:

<script type="text/javascript">
 @for(int i = 0; i < 5; i++)
 {
    document.write(@i);
 }
</script>
Run Code Online (Sandbox Code Playgroud)

这将导致"条件编译关闭"消息.试图在其中插入变通方法将导致来自for循环的上下文",","期望","或"期望;"或"预期""中存在各种其他消息,例如"cc_on".

如何在javascript脚本标记中使用剃刀for循环?

javascript c# razor asp.net-mvc-3

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

asp.net mvc 3应用程序中的默认sessionState是什么?

我正在考虑使用,<sessionState mode="InProc" timeout="45" />因为有些用户反复登录,我想节省一些时间.但是,在我将其添加到我的web.config文件之前,我想确保没有副作用.

我读了很多sessionState版本,虽然我已经很清楚发生了什么,但我很想知道asp.net mvc 3应用程序的默认设置是什么,因为此时sessionState我的内部没有定义system.web.

我知道应用程序可以在Session["key"]没有声明的情况下访问,尽管我试图避免在Session上加载这种类型的负载.我假设我的应用程序继承了IIS 7中的一个设置(此应用程序位于共享托管环境中).

我知道如果我使用专用数据库或服务器进行会话可能会出现问题,但这只是一个基本设置,只要这样,没什么特别的.

sessionStateasp.net mvc 3 有默认值吗?它只是被遗传了吗?web.config如果它在IIS中的其他位置定义,是否会因为覆盖它而产生副作用?

web-config session-state asp.net-mvc-3

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

SelectList文本中的多个值

我试图在dropdownlist文本中显示多个值.下面举例说明.

SelectList(Parts, "pno", "pcode"+"pname")
Run Code Online (Sandbox Code Playgroud)

哪里

pno 是部件号.

pcode 是部分代码.

pname 是部分名称

现在请告诉我如何使用viewmodel连接部分代码和名称(我想使用域模型来实现).

c# asp.net-mvc-3

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

IO操作超时

我正在使用一个查询,该查询撤回了大量填充的导​​航属性.基本上它看起来像这样:

using( var context = new MyApplicationContext() )
{
    DbSet<BaseTable> dbSet = context.Set<BaseTable>();
    IQueryable<BaseTable> query = dbSet;

    query = query.Include(entity => entity.T.C);
    query = query.Include(entity => entity.TC.Select(tc => tc.T.M));
    query = query.Include(entity => entity.TC);
    query = query.Include(entity => entity.W.FW.F.S);
    query = query.Include(entity => entity.W.FW.P);
    query = query.Include(entity => entity.W.PL.P);
    query = query.Include(entity => entity.W.PL);
    query = query.Include(entity => entity.W.E);
    query = query.Include(entity => entity.E);

    query = query.Where( set of conditions );

    List<BaseTable> Loaded = query.ToList();
}
Run Code Online (Sandbox Code Playgroud)

但是,运行此代码会产生错误

IO操作超时
[TimeoutException:IO操作超时] MySql.Data.MySqlClient.TimedStream.StopTimer()+ …

c# mysql entity-framework

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

检查对象数组中的任何对象是否包含另一个对象中的所有键/值对

我正在尝试编写一个函数,该函数查看对象数组(第一个参数)并返回包含给定对象(第二个参数)的所有键/值对的所有对象的数组。

source我下面的代码仅在对象(第二个参数)包含一个键/值对时才有效。当source对象有两个或更多键/值对时,结果不符合预期。

如何解释对象中多个键/值对source

function findObjects(collection, source) {
  var result = [];

  for (i=0; i<collection.length; i++) {
    for (var prop in source) {
      if (collection[i].hasOwnProperty(prop) && collection[i][prop] == source[prop]) {
        console.log('Collection\'s object ' + [i] + ' contains the source\'s key:value pair ' + prop + ': ' + source[prop] + '!');
        result.push(collection[i]);
      } else {
        console.log('fail');
      }
    }
  }

  console.log('The resulting array is: ' + result);
  return result;
}

findObjects([{ "a": 1, "b": 2 }, …
Run Code Online (Sandbox Code Playgroud)

javascript javascript-objects

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

ASP.NET C# MVC 将值从控制器传递到 cshtml

我是使用 Razor 页面的新手,因此我在模型目录中有一个具有以下值的类:

public int Id { set; get; }
public string CustomerCode { set; get; }
public double Amount { set; get; }
Run Code Online (Sandbox Code Playgroud)

在我的控制器(.cs 文件)中,我有以下内容:

 public ActionResult Index()
 {
     Customer objCustomer = new Customer();
     objCustomer.Id = 1001;
     objCustomer.CustomerCode = "C001";
     objCustomer.Amount = 900.78;
     return View();
 }
Run Code Online (Sandbox Code Playgroud)

...现在,我想通过我的 Index.cshtml 页面显示这些值,但是当我运行该应用程序时,我只得到我输入的与值相反的实际代码:

...这就是 .cshtml 页面设置的方式:

@model Mvccustomer.Models.Customer

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
<div>
    The customer id is : <%= Model.Id %> <br />
    The customer id is : <%= Model.CustomerCode %> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc razor

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