我有以下代码来指定SQL查询的参数.我使用时会遇到异常Code 1
; 但是当我使用时工作正常Code 2
.在Code 2
我们检查null并因此检查if..else
块.
例外:
参数化查询'(@ application_ex_id nvarchar(4000))SELECT E.application_ex_id A'需要参数'@application_ex_id',这是未提供的.
代码1:
command.Parameters.AddWithValue("@application_ex_id", logSearch.LogID);
Run Code Online (Sandbox Code Playgroud)
代码2:
if (logSearch.LogID != null)
{
command.Parameters.AddWithValue("@application_ex_id", logSearch.LogID);
}
else
{
command.Parameters.AddWithValue("@application_ex_id", DBNull.Value );
}
Run Code Online (Sandbox Code Playgroud)
题
你能解释一下为什么它无法从代码1中的logSearch.LogID值中获取NULL(但能够接受DBNull)吗?
有没有更好的代码来处理这个?
参考:
码
public Collection<Log> GetLogs(LogSearch logSearch)
{
Collection<Log> logs = new Collection<Log>();
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string commandText = @"SELECT *
FROM Application_Ex E
WHERE (E.application_ex_id = @application_ex_id …
Run Code Online (Sandbox Code Playgroud) 我是ASP.Net MVC的新手.我刚刚在Visual Studio 2010中创建了一个MVC3项目.视图引擎是剃须刀.当我刚运行应用程序时,它在浏览器中给出了正确的结果.URL为http:// localhost:4163 /.然后我将"设置为起始页"应用于〜\ Views\Home文件夹中的Index.cshtml.然后当我运行应用程序时,url变为 http:// localhost:4148/Views/Home/Index.cshtml ,它说无法找到资源.我该怎么做才能纠正它?网址映射在哪里完成?
Global.asax文件:
using System.Web.Mvc;
using System.Web.Routing;
namespace TEST
{
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我在用ASP.Net MVC 4
.我在视图上有多个按钮..目前我调用相同的动作方法; 我正在区分使用name
属性的单击按钮.
@using (Html.BeginForm("Submit", "SearchDisplay", new { id = Model == null ? Guid.NewGuid().ToString() : Model.SavedSearch }, FormMethod.Post))
{
<div class="leftSideDiv">
<input type="submit" id="btnExport" class="exporttoexcelButton"
name="Command" value="Export to Excel" />
</div>
<div class="pageWrapperForSearchSubmit">
<input type="submit" class="submitButton"
value="Submit" id="btnSubmitChange" />
</div>
}
Run Code Online (Sandbox Code Playgroud)
//行动
[HttpPost]
public ActionResult Submit(SearchCostPage searchModel, string Command)
{
SessionHelper.ProjectCase = searchModel.ProjectCaseNumber;
if (string.Equals(Command, Constants.SearchPage.ExportToExcel))
{
}
}
Run Code Online (Sandbox Code Playgroud)
质询
参考文献:
我在我的Windows 7(32位)中安装了gpp,如图所示.
PATH变量气体g ++
"%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\cygnus\cygwin-b20\H-i586-cygwin32\bin\g++"
Run Code Online (Sandbox Code Playgroud)
还是eclipse显示错误:
"程序"g ++"在PATH中找不到".
怎么解决这个问题?
我有以下代码RequiredFieldValidator
.该EnableClientScript
属性在验证控件中设置为"false".我也在浏览器中禁用了脚本.
我没有Page.IsValid
在后面的代码中使用.不过,当我在文本框中提交没有任何价值时,我会得到error message
.
根据@Dai的评论,我发现这可能是一个问题,如果有任何代码Page_Load
在a中执行postback
.不会抛出任何验证错误.
(但是,对于按钮单击处理程序,无需检查Page.IsValid
)
if (Page.IsPostBack)
{
string value = txtEmpName.Text;
txtEmpName.Text = value + "Appended";
}
Run Code Online (Sandbox Code Playgroud)
题
Page_Load
?Page.IsValid
?Page.IsValid
;但是说明了什么是强制性使用场景Page.IsValid
更新1
Page.IsValid
只有在之后Page.Validate()
隐式调用的run方法之后才能访问Page_Load
.如果您将所有逻辑保存在Page_Load事件处理程序中(非常不鼓励!),请Page.Validate()
在检查之前调用Page.IsValid
.
注意:建议不要保留所有逻辑Page_Load
.如果按钮单击事件发生了某些事情,请将其移动到按钮单击事件处理程序.如果在下拉事件中发生某些事情,请将其移至下拉选定的项目更改事件处理程序.
更新2
看起来,我们需要添加If(Page.IsValid)
的button click
,如果我们使用的是也Custom Validator
与服务器端验证.请参阅CustomValidator不能正常工作.
注意:此处存在客户端验证问题:是否使用Page_IsValid或Page_ClientValidate()(对于客户端事件)
MARKUP …
我有以下jQuery代码,以防止双击按钮.它工作正常.我Page_ClientValidate()
用来确保只有在页面有效时才会阻止双击.[如果存在验证错误,则不应设置标志,因为没有回发到服务器的启动]
是否有更好的方法可以防止在页面加载之前再次单击按钮?
我们isOperationInProgress = yesIndicator
是否可以仅在页面导致回发到服务器时设置标志 ?是否适合event
在用户第二次点击按钮之前调用它?
注意:我正在寻找一种不需要任何新API的解决方案
注意:这个问题不重复.在这里,我试图避免使用Page_ClientValidate()
.此外,我正在寻找一个event
我可以移动代码的地方,以便我不需要使用Page_ClientValidate()
注意:我的方案中没有涉及ajax.该ASP.Net
表格将被同步提交给服务器.javascript中的按钮单击事件仅用于防止双击.表单提交是使用ASP.Net同步的.
现在的代码
$(document).ready(function () {
var noIndicator = 'No';
var yesIndicator = 'Yes';
var isOperationInProgress = 'No';
$('.applicationButton').click(function (e) {
// Prevent button from double click
var isPageValid = Page_ClientValidate();
if (isPageValid) {
if (isOperationInProgress == noIndicator) {
isOperationInProgress = yesIndicator;
} else {
e.preventDefault();
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
参考文献:
@Peter Ivan在上述参考文献中注意到:
重复调用Page_ClientValidate()可能会导致页面过于突兀(多个警报等).
我曾经使用context.Log跟踪LINQ to SQL生成的SQL语句,如Sql Server Query Visualizer所示 - 看不到生成的SQL查询
context.Log = new OutputWindowWriter();
Run Code Online (Sandbox Code Playgroud)
对于EF,有什么类似的,像上面的方法一样容易吗?
我在TestExecute.cpp中收到此错误 -
"符号'标准'无法解决"
码
#include <iostream>
using namespace std;
Run Code Online (Sandbox Code Playgroud)
我刚刚在Eclipse(在Windows 7中)创建了一个可执行项目,如下所示.看来我正在选择一个不受支持的工具链.是这样吗?我已经安装了Cygwin,它可以在首选项中使用.
编辑:基于@RobertoWilko评论,删除行"using namespace std;"删除了错误.但是没有创建二进制文件."发射失败.未发现二进制".怎么纠正这个?
在参考了很多博客和文章之后,我已经达到了以下代码,用于在文件夹内的所有文件中搜索字符串.它在我的测试中运行良好.
质询
注意:我测试了非常小的文件.文件数量也很少.
码
static void Main()
{
string sourceFolder = @"C:\Test";
string searchWord = ".class1";
List<string> allFiles = new List<string>();
AddFileNamesToList(sourceFolder, allFiles);
foreach (string fileName in allFiles)
{
string contents = File.ReadAllText(fileName);
if (contents.Contains(searchWord))
{
Console.WriteLine(fileName);
}
}
Console.WriteLine(" ");
System.Console.ReadKey();
}
public static void AddFileNamesToList(string sourceDir, List<string> allFiles)
{
string[] fileEntries = Directory.GetFiles(sourceDir);
foreach (string fileName in fileEntries)
{
allFiles.Add(fileName);
}
//Recursion
string[] subdirectoryEntries = Directory.GetDirectories(sourceDir);
foreach (string item in subdirectoryEntries)
{
// Avoid "reparse points" …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Code First方法创建数据库.当我运行以下代码时,我收到以下异常.我定义的字段有什么问题吗?我们怎样才能克服这一点?
例外:
更新条目时发生错误.有关详细信息,请参阅内部异常
内在例外:
"无效的对象名称'dbo.Dinners'.
注意:我在数据库中没有这样的表(Dinners).该代码应该创建表.我只是给了连接字符串来识别EF Code First中提到的服务器:无法连接到SQL Server.我应该更改连接字符串吗?
连接字符串:
string connectionstring ="Data Source = .; Initial Catalog = LibraryReservationSystem; Integrated Security = True; Connect Timeout = 30";
LibraryReservationSystem数据库已经是现有数据库.它没有桌子.我期待EF创建表格.
我从一个正在运行的LINQ 2 SQL应用程序复制的连接字符串.我是否需要对其进行任何更改才能提供给EF?
UPDATE
当我包含以下代码时,异常发生了变化.现在它说 - "无效的对象名称'dbo.Dinner'.".现在正在抱怨餐桌; 不是晚餐表.
protected override void OnModelCreating(DbModelBuilder modelbuilder)
{
modelbuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
Run Code Online (Sandbox Code Playgroud)
原始代码
static void Main(string[] args)
{
string connectionstring = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";
using (var db = new NerdDinners(connectionstring))
{
var product = new Dinner { …
Run Code Online (Sandbox Code Playgroud) .net ×4
c# ×4
asp.net ×2
asp.net-mvc ×2
c++ ×2
eclipse ×2
ado.net ×1
c ×1
eclipse-cdt ×1
file-io ×1
g++ ×1
javascript ×1
jquery ×1
razor ×1
validation ×1