小编Inv*_*nda的帖子

高度样式属性在div元素中不起作用

我在a上设置了20px的高度<div>,但是当它在浏览器中呈现时,它只有14px高.

有任何想法吗?

<div style="display:inline; height:20px width: 70px">My Text Here</div>
Run Code Online (Sandbox Code Playgroud)

html css

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

在ASP.NET MVC中单击按钮时呈现部分视图

我将要描述的问题与我已经发现的问题非常相似(例如这篇文章名称几乎相同),但我希望我能把它变成一个不重复的东西.

我在Visual Studio中创建了一个新的ASP.NET MVC 5应用程序.然后,我定义了两个模型类:

public class SearchCriterionModel
{
  public string Keyword { get; set; }
}

public class SearchResultModel
{
  public int Id { get; set; }
  public string FirstName { get; set; }
  public string Surname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我创建了SearchController如下:

public class SearchController : Controller
{
  public ActionResult Index()
  {
    return View();
  }

  public ActionResult DisplaySearchResults()
  {
    var model = new List<SearchResultModel>
    {
      new SearchResultModel { Id=1, FirstName="Peter", Surname="Pan" },
      new SearchResultModel …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc jquery

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

Join with Where子句的查询和方法(lambda)语法的等价性

我简化的LINQ JoinWhere两个表如下所示:

var join = context.Foo
  .Join(context.Bar,
    foo => new { foo.Year, foo.Month },
    bar => new { bar.Year, bar.Month },
    (foo, bar) => new { foo.Name, bar.Owner, foo.Year })
  .Where(anon => anon.Year == 2015).ToList();
Run Code Online (Sandbox Code Playgroud)

或者我可以使用以下语法,我希望它是等效的:

var joinQuery = from foo in context.Foo
                join bar in context.Bar
                on new { foo.Year, foo.Month } equals new { bar.Year, bar.Month }
                where foo.Year == 2015
                select new { foo.Name, bar.Owner };
var join = joinQuery.ToList();
Run Code Online (Sandbox Code Playgroud)

我和我想知道的一个区别是命令的顺序.在lambda语法连接中,我将foo.Year属性添加到我的匿名返回类型,因此我可以在之后进行过滤,而在另一个查询中,我仍然可以在子句中使用foo …

.net c# linq linq-to-entities entity-framework

12
推荐指数
2
解决办法
942
查看次数

更优雅的方法,找出我是否可以将值转换为某种类型

我正在使用一些遗留代码,它们通常使用try+ catchConvert.ToDecimal(someString)(例如)结合使用来尝试将字符串转换为小数.出于某些原因,我必须使用这样的设置 - 在调试时 - 我停在每个抛出的异常(不仅是用户未处理的异常),所以这很烦人,我改变它以TryParse尽可能使用方法.

现在我处在一个object有价值和目标的情况下Type,我想知道的是我是否可以值转换为目标类型.现在这样做如下:

try
{
  Convert.ChangeType(val, targetType);
}
catch
{
  // Do something else
}
Run Code Online (Sandbox Code Playgroud)

实际结果并不重要,不再使用.

虽然这个代码现在正在运行,正如我所说,它有点烦人,所以我想知道:有没有其他方法可以做到上述而不必捕获异常?

我想到了类似于IsAssignableFroma 的东西Type,但这似乎并不适用于我的情况(我不想分配,我想知道是否可以明确转换).

c# reflection casting

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

使用Eclipse CDT + MinGW + GLEW + GLFW的OpenGL:未定义的参考

编辑:我在此期间想到了这一点,并在下面写了详细的答案.

我刚试过在Win7上从Express版本的MSVC 10切换到Eclipse CDT,在配置时遇到了以下简单的OpenGL代码问题(在Visual Studio中可以正常工作):

#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main()
{
    GLFWwindow* w;

    if (!glfwInit())
        return -1;

    w = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!w)
    {
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(w);

    glewExperimental = true;
    if (glewInit() != GLEW_OK)
    {
        return -1;
    }

    while (!glfwWindowShouldClose(w))
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glfwSwapBuffers(w);
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Visual Studio中,我包括GLFW和GLEW的库路径,并按顺序链接(除了VS内置的东西)opengl32.lib,glew32s.lib,glfw3.lib.

现在,如果我在Eclipse CDT中做同样的事情,我无法让它工作.发生以下错误:

Info: Internal Builder is used for build
g++ "-LD:\\lib\\cpp\\glfw-3.0.1.bin.WIN32\\lib-mingw" "-LD:\\lib\\cpp\\glew-1.10.0binaries\\lib\\Release\\Win32" -o glfwcheck.exe main.o -lopengl32 -lglew32s …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glew mingw glfw

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

使用反射将对象动态添加到实体框架

在下面的代码中, 的类型domainObject有所不同(但以 结尾DO,然后我修剪它以获得相应的表名)。有了表的名称和它的类型,我想tableName用来自domainObject. 因此,我必须首先在表中找到相同的 POCOID来覆盖它。这是到目前为止的代码:

public void Update(object domainObject)
{
  Type type = domainObject.GetType();
  string tableName = type.Name.Substring(0, type.Name.Length - 2);
  PropertyInfo tableProp = typeof(MyDbContext).GetProperty(tableName);
  Type tableType = tableProp.PropertyType;
  Type pocoType = tableType.GetGenericArguments()[0];

  int id = (int)type.GetProperty("ID").GetValue(domainObject);

  using (var context = new MyDbContext())
  {
    object table = tableProp.GetValue(context);
    MethodInfo singleMethod = tableType.GetMethod("Single");
  }
}
Run Code Online (Sandbox Code Playgroud)

通常,知道实际的表而不仅仅是它的类型,我现在会通过

var poco = context.TableName.Single(item => item.ID == id);
Run Code Online (Sandbox Code Playgroud)

这里有2个问题:

(1)Single是一种扩展方法。

(2) 我不知道如何以 an …

c# entity-framework system.reflection

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

错误:我的 Makefile 中的“混合隐式和静态模式规则”

我有一个Makefile小型 C++ 应用程序,它在一个文件夹中只有几个源代码文件,这个文件夹也是输出文件夹。现在我试图分离源文件和目标文件并遇到了问题。这就是我的 makefile 现在的样子,我将在下面详细介绍问题发生的位置。

CC = gcc
CXX = g++
RM = del

TARGET = plox.exe

CFLAGS = -Wall -ggdb -O3 $(INCLUDE)
CXXFLAGS = -std=c++11 -Wall -ggdb -O3 $(INCLUDE)
LDFLAGS = $(LIB) -lglfw3 -lopengl32 -lglu32 -lgdi32

INCLUDE = -I$(GLFW_INC) -I$(GLAD_INC)
LIB = -L$(GLFW_LIB)

SRC_DIR = src
BUILD_DIR = build

GLFW_DIR = d:/external/glfw-3.1
GLFW_INC = $(GLFW)/include
GLFW_LIB = $(GLFW)/lib64

GLAD = d:/external/glad-c
GLAD_INC = $(GLAD)/include

CXX_SOURCES = $(SRC_DIR)/%.cpp
CXX_OBJS = $(addprefix $(BUILD_DIR)/, $(CXX_SOURCES:.cpp=.o))
OBJS = $(CXX_OBJS) $(BUILD_DIR)/glad.o

all: …
Run Code Online (Sandbox Code Playgroud)

c++ windows makefile c++11

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

取消装箱-1并使用泛型强制转换为Nullable <int>会产生InvalidCastException

该SO交我发现它返回一个默认值,如果由读出的值的通用扩展方法SqlDataReadernullDBNull.Value,和正确地转换值否则.我这样实现了:

public static T GetValueOrDefault<T>(this SqlDataReader reader, string columnName, T defaultValue = default(T))
{
  object val = reader[columnName];
  if (val == null || val == DBNull.Value)
  {
    return defaultValue;
  }

  return (T)val;
}
Run Code Online (Sandbox Code Playgroud)

下面提到的示例在上面链接的帖子中没有使用正确的语法,但是仍然建议这也适用于可空类型,例如int?.

但是,我int从数据库中读取了一个可以为空的列,如下所示:

MyProperty = reader.GetValueOrDefault<int?>("SomeColumnName")
Run Code Online (Sandbox Code Playgroud)

其中,调试模式让我发现,val-1Tint?,但我得到一个InvalidCastException.从这篇文章中我发现这是因为拆箱和铸造不能在一次操作中执行(val具有object保持short值的类型),但是我能做些什么来使它在我的情况下工作?由于它是一种通用方法,我不知道在进行转换之前如何手动取消它.

c# generics unboxing casting

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

这是什么样的模式('提供者')?

在工作中,我们使用的是一种我在GoF书中没有找到的"模式"(但这可能是由于在这个问题上缺乏能力,我只是略去了模式)而且我仍然在怀疑.

比方说,如果我们有一个包含项目DataAccess的多项目解决方案,那么管理数据访问.然后通常我看到它有这样的结构:

Providers (Folder)
 - DataAccessProvider.cs

Interfaces (Folder)
 - IFileLoader.cs

Implementors (Folder)
 - FileLoader.cs
Run Code Online (Sandbox Code Playgroud)

这里是接口FileLoaderinternal实现,IFileLoader提供者看起来像这样:

public static class DataAccessProvider
{
  public static IFileLoader FileLoader
  {
    get { return new FileLoader(); }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是什么样的设计模式(如果有的话),除了掩盖IFileLoader接口的具体实现之外,它的真正用途是什么?

其次,这真的是"好风格"吗?我想知道,例如,如果有很多电话会发生什么

string content = DataAccessProvider.FileLoader.LoadContentFromFile("abc.txt");
Run Code Online (Sandbox Code Playgroud)

new FileLoader()无论何时使用它都会调用.是不是有更优雅的方式来做类似的方法?

c# design-patterns

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

只要发送的文本包含"<",就不会从$ .ajax POST调用Action方法

我正在使用以下内容在我的Intranet站点上显示一些文本:

@Html.TextAreaFor(model => model.Text)
Run Code Online (Sandbox Code Playgroud)

现在,文本可能包含一些类似XML的格式,当我在表单提交上尝试以下操作时,这似乎会出现问题:

$("form").on("submit", function () {
  var model = $(this).serialize();
  $.ajax({
    url: "/Test/Foo",
    type: "POST",
    data: model,
    dataType: "json",
    success: doSomething(response)
  });
  return false;
});
Run Code Online (Sandbox Code Playgroud)

动作方法采用POCO作为站点的模型,我提交的形式返回一些JsonResult.

只要文本中的文本<textarea>是"普通"文本,就没有问题,我正确输入了操作方法,我的POCO具有正确的属性值.但是一旦我输入文本<foo>(带括号)<textarea>,我的动作方法就不再被击中了.

我尝试使用$(this).serializeArray()而不是它也不起作用.该serialize()serializeArray()方法甚至取代了"<"和">"符号(也"=";第一个我认为这是造成问题的原因),所以我想他们正在内部使用escape(),但没有发送.

当我手动发送为 data

{
  Text: escape($("#myTextArea").val()),
  Description: $("#someInput").val(),
  Id: $("input[type=hidden]").val()
}
Run Code Online (Sandbox Code Playgroud)

它工作,也就是说,我输入我的动作方法,但当然我有一个奇怪的格式化字符串在服务器上工作.

究竟是什么问题?一些编码问题?我是否必须以其他方式序列化以避免此问题?

ajax asp.net-mvc jquery json html-escape-characters

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

仅为具有最高z-index的元素单击处理程序

在我正在创建的页面中,有一些WebGrid组件用作主网格,单击一行时会显示详细信息区域.现在每行还应该有一个删除按钮,这样点击这个按钮就会删除该行.

现在因为我有一个点击处理程序#myGrid tbody tr,并且按钮(实际上只是一个图像)在里面tr,当我点击按钮时,两个点击处理程序都会被执行.我该怎么做才能防止这种情况,只需执行按钮的单击处理程序,即"top"元素?

这是一个jsFiddle,大致展示了我目前正在做的事情

有没有一种优雅的方式来做到这一点,或者有可能替代我目前正在做的事情?

作为参考,这里有一些甚至更短的示例代码.HTML:

<table id="tbl">
  <tr>
    <td><img src="someImage.png" class="delete-button" /></td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

$(document).ready(function () {
  $("#tbl tr").click(function () {
    alert("row click");
  });
  $(".delete-button").click(function () {
    alert("delete-button click");
  });
})
Run Code Online (Sandbox Code Playgroud)

html javascript css jquery jquery-selectors

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