首先,为了让事情更清楚,我将从顶部解释我的情景:
我有一个具有以下签名的方法:
public virtual void SendEmail(String from, List<String> recepients, Object model)
Run Code Online (Sandbox Code Playgroud)
我想要做的是生成一个匿名对象,它具有模型对象的属性以及前两个参数.将模型对象展平为PropertyInfo []非常简单.因此,我想到创建一个包含PropertyInfo和前两个参数的字典,然后转换为匿名对象,其中键是属性的名称,值是属性的实际值.
那可能吗?还有其他建议吗?
我在Entity Framework Code First上使用Generic Repository模式.一切都工作正常,直到我需要在查询中包含更多实体.我成功地包含了一个实体,但现在我无法弄清楚如何包含多个实体.看看到目前为止我得到了什么:
public IQueryable<TEntity> GetQuery<TEntity>() where TEntity : class
{
var entityName = GetEntityName<TEntity>();
return _objectContext.CreateQuery<TEntity>(entityName);
}
public IList<TEntity> GetQueryWithInclude<TEntity>(string toInclude) where TEntity : class
{
var entityName = GetEntityName<TEntity>();
return _objectContext.CreateQuery<TEntity>(entityName).Include(toInclude).ToList();
}
private string GetEntityName<TEntity>() where TEntity : class
{
return string.Format("{0}.{1}", _objectContext.DefaultContainerName, _pluralizer.Pluralize(typeof(TEntity).Name));
}
Run Code Online (Sandbox Code Playgroud)
我尝试但没有工作的是将一个字符串数组传递给一个函数,然后尝试在查询之上"追加"包含.我在想,如果我叫GetQueryWithInclude并在同一时间聚集查询的结果通过了实体名称(实际导航性能),但我担心这可能会重复在每次调用查询的结果...您认为最好的方法是什么?
提前致谢!
更新:
这是我想要实现的一个例子:
public IQueryable GetQueryWithIncludes(string[] otherEntities)
{
var entityName = GetEntityName<TEntity>();
//now loop over the otherEntities array
//and append Include extensions to the query
//so inside the loop, something …Run Code Online (Sandbox Code Playgroud) c# entity-framework repository-pattern entity-framework-4 ef-code-first
我正在构建自己的会员系统,我想要与MS会员提供商无关.我查看了互联网和StackOverflow,但我所能找到的只是建立在MS会员提供商之上的会员提供商.
无论如何,我现在几乎所有东西都挂了,但我想使用自定义的Authorize属性来利用我的会员基础设施.我在网站上查看了这个帖子,我正在尝试做类似的事情,但我不确定我需要的是什么.到目前为止,这些是我得到的课程:
SessionManager:
public static class SessionManager : ISessionManager
{
public static void RegisterSession(string key, object obj)
{
System.Web.HttpContext.Current.Session[key] = obj;
}
public static void FreeSession(string key)
{
System.Web.HttpContext.Current.Session[key] = null;
}
public static bool CheckSession(string key)
{
if (System.Web.HttpContext.Current.Session[key] != null)
return true;
else
return false;
}
public static object ReturnSessionObject(string key)
{
if (CheckSession(key))
return System.Web.HttpContext.Current.Session[key];
else
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
SharweAuthorizeAttribute: (我真的不知道,如果这确实是我应该做的事)
public class SharweAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext) …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个HtmlHelper向视图输出一些HTML 的扩展.在这个HTML中,我正在连接一些KnockoutJS绑定.我是KO的新手,所以我仍然在努力完成一些事情.无论如何,我要做的是生成绑定到客户端代码上的observable的输入字段(在服务器端代码中),然后通过隐藏字段的值设置observable的初始值.不幸的是,这对我不起作用.所以我想知道我是否有办法完成这项任务(即使我必须完全不同).
这是我基本上在做的事情:
在我的客户端视图模型中,我有以下内容:
self.dataSource = ko.observable();
self.pageSize = ko.observable();
Run Code Online (Sandbox Code Playgroud)
我的扩展方法输出如下:
<input type="hidden" value="/Employee/Get" data-bind="value: dataSource" />
<input type="hidden" value="30" data-bind="value: pageSize" />
Run Code Online (Sandbox Code Playgroud)
但是当页面呈现时,当我检查元素时,我注意到value输入字段的输入字段被设置为空字符串,我认为这是因为可以观察到observables的方式.但有没有办法来覆盖这种行为或其他什么?
我正在尝试在登录表单中实现"记住我"功能.我使用ASP.NET MVC作为我的Web应用程序.我设法让cookie的东西工作,但我没有自动登录用户,以防他/她之前检查记住我复选框.我知道问题是什么,但我不知道如何解决它.
在我的HomeController中,我有以下内容:
private LoginViewModel CheckLoginCookie()
{
if (!string.IsNullOrEmpty(_appCookies.Email) && !string.IsNullOrEmpty(_appCookies.Password))
{
var login = new LoginViewModel
{
Email = _appCookies.Email,
Password = _appCookies.Password
};
return login;
}
return null;
}
public ActionResult Index()
{
var login = CheckLoginCookie();
if (login != null)
return RedirectToAction("Login", "User", login);
var viewModel = new HomeIndexViewModel
{
IntroText =
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, …Run Code Online (Sandbox Code Playgroud) 关于Content文件夹如何在ASP.NET MVC中工作,我仍然无法理解.为了使事情更清楚,我有几个问题:
我发现以下链接在MVC Web应用程序的上下文中有用,但我仍然感谢上面发布的问题的一些答案.谢谢.
我正在尝试使用Rewrite Module 2.0进行URL 重写,但我没有运气让它工作.我要做的是将端口80上的所有对Web应用程序的调用重新写入IIS中托管的其他应用程序(或者可能在网络上的不同服务器上).使用IIS提供的GUI我创建了以下规则:
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="site1/(.*)" />
<action type="Rewrite" url="http://localhost:7001/{R:1}" />
</rule>
</rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
安静简单,但不幸的是它不起作用.另一方面,当我将动作类型更改为时Redirect,它可以正常工作.
可能是什么问题呢?
有没有办法使用Core Reporting API(v3)查询结果并按用户ID过滤这些结果,假设它正确地发送到Google Analytics?
我已经搜索了很多这个问题并阅读了大量文章,但我没有找到一个可以做到这一点的地方.而且,我无法User ID在报告界面中看到任何地方,这让我怀疑这甚至是可能的.我猜我必须在这里做一些类似于推荐的东西才能做到这一点?
UPDATE
显然,我的问题的目的并不十分清楚,正如Eike的评论所强调的那样.我想要做的是使用客户端API为具有特定Id的特定用户生成报告,然后将这些结果与我在系统数据库中有关此用户的信息相结合,以根据我的业务需求执行某些操作.
出于某种原因,我的一个Html.Action()方法抛出了一个StackOverflowException,它只是在我调试Web服务器实例后才被捕获并停止响应.我得到的就是这个:
System.StackOverflowException未处理
无法计算表达式,因为当前线程处于堆栈溢出状态.
抛出异常的行是这样的:
<div id="userInfoSummary">@Html.Action("Summary", "User")</div>
当我登录然后被重定向到主页时会发生这种情况(这种情况从未发生过,因为它被卡住了.
以下是我如何检查用户是否登录以适应呈现视图的方式:
<div id="userPanel">
@if (!SessionManager.CheckSession(SessionKeys.User))
{
<div id="loginForm">@Html.Action("Login", "User")</div>
<div id="registerForm">@Html.Action("Register", "User")</div>
<hr class="greyLine" />
<div id="recentlyViewedItems">
<div id="recentItemsTitle">
<span class="recentItemsIcon"></span><span class="theRecentTitle">Recently Viewed</span>
</div>
</div>
}
else
{
<div id="userInfoSummary">@Html.Action("Summary", "User")</div>
}
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的ActionMethods:
[HttpPost]
public ActionResult Login(LoginViewModel dto)
{
bool flag = false;
if (ModelState.IsValid)
{
if (_userService.AuthenticateUser(dto.Email, dto.Password, false)) {
var user = _userService.GetUserByEmail(dto.Email);
var uSession = new UserSession
{
ID = user.Id,
Nickname = user.Nickname
};
SessionManager.RegisterSession(SessionKeys.User, uSession);
flag …Run Code Online (Sandbox Code Playgroud) 我正在尝试组合使用AngularJS和RequireJS.我想使用该$routeProvider服务,避免在应用程序启动时为我的视图加载所有控制器.为此,我尝试了以下方法:
define(['require', 'angular', 'appModule'], function (require, angular, app) {
app.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/sites', {templateUrl: '/Site/GetSitesView', controller: function() {
require(['sitesController'], function(SitesController) {
return new SitesController();
})
}})
}]);
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,这对我不起作用.没有错误.包含控制器的JS文件正在正确加载,但我无法在渲染视图中看到数据绑定值.我想知道是否可以controller以其他方式分配等待异步调用(加载JS文件)来完成的值.
有任何想法吗?
asp.net-mvc ×4
.net ×3
asp.net ×3
c# ×3
angularjs ×1
data-binding ×1
debugging ×1
dictionary ×1
iis ×1
javascript ×1
knockout.js ×1
localhost ×1
observable ×1
remember-me ×1
requirejs ×1
routing ×1
userid ×1