我在a上设置了20px的高度<div>,但是当它在浏览器中呈现时,它只有14px高.
有任何想法吗?
<div style="display:inline; height:20px width: 70px">My Text Here</div>
Run Code Online (Sandbox Code Playgroud) 我将要描述的问题与我已经发现的问题非常相似(例如这篇文章名称几乎相同),但我希望我能把它变成一个不重复的东西.
我在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) 我简化的LINQ Join加Where两个表如下所示:
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 …
我正在使用一些遗留代码,它们通常使用try+ catch与Convert.ToDecimal(someString)(例如)结合使用来尝试将字符串转换为小数.出于某些原因,我必须使用这样的设置 - 在调试时 - 我停在每个抛出的异常(不仅是用户未处理的异常),所以这很烦人,我改变它以TryParse尽可能使用方法.
现在我处在一个object有价值和目标的情况下Type,我想知道的是我是否可以将值转换为目标类型.现在这样做如下:
try
{
Convert.ChangeType(val, targetType);
}
catch
{
// Do something else
}
Run Code Online (Sandbox Code Playgroud)
实际结果并不重要,不再使用.
虽然这个代码现在正在运行,正如我所说,它有点烦人,所以我想知道:有没有其他方法可以做到上述而不必捕获异常?
我想到了类似于IsAssignableFroma 的东西Type,但这似乎并不适用于我的情况(我不想分配,我想知道是否可以明确转换).
编辑:我在此期间想到了这一点,并在下面写了详细的答案.
我刚试过在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) 在下面的代码中, 的类型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 …
我有一个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) 在该SO交我发现它返回一个默认值,如果由读出的值的通用扩展方法SqlDataReader是null或DBNull.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是-1和T是int?,但我得到一个InvalidCastException.从这篇文章中我发现这是因为拆箱和铸造不能在一次操作中执行(val具有object保持short值的类型),但是我能做些什么来使它在我的情况下工作?由于它是一种通用方法,我不知道在进行转换之前如何手动取消它.
在工作中,我们使用的是一种我在GoF书中没有找到的"模式"(但这可能是由于在这个问题上缺乏能力,我只是略去了模式)而且我仍然在怀疑.
比方说,如果我们有一个包含项目DataAccess的多项目解决方案,那么管理数据访问.然后通常我看到它有这样的结构:
Providers (Folder)
- DataAccessProvider.cs
Interfaces (Folder)
- IFileLoader.cs
Implementors (Folder)
- FileLoader.cs
Run Code Online (Sandbox Code Playgroud)
这里是接口FileLoader的internal实现,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()无论何时使用它都会调用.是不是有更优雅的方式来做类似的方法?
我正在使用以下内容在我的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)
它工作,也就是说,我输入我的动作方法,但当然我有一个奇怪的格式化字符串在服务器上工作.
究竟是什么问题?一些编码问题?我是否必须以其他方式序列化以避免此问题?
在我正在创建的页面中,有一些WebGrid组件用作主网格,单击一行时会显示详细信息区域.现在每行还应该有一个删除按钮,这样点击这个按钮就会删除该行.
现在因为我有一个点击处理程序#myGrid tbody tr,并且按钮(实际上只是一个图像)在里面tr,当我点击按钮时,两个点击处理程序都会被执行.我该怎么做才能防止这种情况,只需执行按钮的单击处理程序,即"top"元素?
有没有一种优雅的方式来做到这一点,或者有可能替代我目前正在做的事情?
作为参考,这里有一些甚至更短的示例代码.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)