我试图用返回类型实现左外连接扩展方法IQueryable.
我写的功能如下
public static IQueryable<TResult> LeftOuterJoin2<TOuter, TInner, TKey, TResult>(
this IQueryable<TOuter> outer,
IQueryable<TInner> inner,
Func<TOuter, TKey> outerKeySelector,
Func<TInner, TKey> innerKeySelector,
Func<TOuter, TInner, TResult> resultSelector)
{
return
from outerItem in outer
join innerItem in inner on outerKeySelector(outerItem)
equals innerKeySelector(innerItem) into joinedData
from r in joinedData.DefaultIfEmpty()
select resultSelector(outerItem, r);
}
Run Code Online (Sandbox Code Playgroud)
它无法生成查询.原因可能是:我用过Func<>而不是Expression<>.我也尝试过Expression<>.它给我一个在线错误outerKeySelector(outerItem),这outerKeySelector是一个被用作方法的变量
我发现了一些关于SO(比如这里)和CodeProjects的讨论,但那些适用于IEnumerable不适合的类型IQueryable.
我的表有两列CreatedBy和CreateTime.在我的视图中,我没有这些字段.现在,当我使用ASP.NET MVC4 Edit(post)方法更新记录时,这些列将设置为null.但我想保留这些价值观.我知道在我的Edit(post)方法中,我可以从数据库中检索记录并手动设置它们.但我想知道我是否可以要求实体框架不要更改这些字段的值.
我的 ASP.NET MVC4 应用程序具有在模型中定义并在控制器方法中实现的远程验证规则。我的表单是动态添加到页面的。因此,我使用以下代码来触发验证。
$(tabId).on("submit", formId, function (event) {
event.preventDefault();
var form = $(this);
form.removeData("validator");
$.validator.unobtrusive.parse(form);
if (form.valid())
{
// form submission
// THIS part executes even though the remote validation returns false
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
它开始远程验证并且不等待完成然后提交表单。如果任何其他字段无效(例如,名称是必填字段),则会停止提交。但是,它不会等待远程验证。
我在 SO 上找到了一些解决方法,例如link1和link2。但是,只有在我的页面中定义了 jQuery 验证规则时,这些才有效。但是,我使用的是 MVC4 模型验证规则。因此,我没有兴趣再次在我的视图页面中重新定义规则。
有什么解决办法吗?
在jQuery mobile中,我想在index.html首次加载此页面时在我的主页()中显示一条对话框消息.但是,如果用户导航到我的网站的不同页面并回到我的网站index.html,我不想显示对话框.
我正在考虑使用pageshow或pagebeforeshow方法和检查prevPage对象.还有其他好办法吗?