我有一个MVC3站点,我正在编写代码来注册用户.代码执行此操作:
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
Run Code Online (Sandbox Code Playgroud)
它接下来要做的是:
HttpContext.Profile["FirstNAme"] = model.FirstName;
HttpContext.Profile["LastName"] = model.LastName;
Run Code Online (Sandbox Code Playgroud)
这是它失败的地方.我得到的错误是:
无法为匿名用户设置此属性.
我理解为什么; 这是因为没有用户登录或没有指定用户,所以当然我无法为用户设置配置文件.我正在从Pro ASP.NET MVC 3 Framework的第754页开始工作,这是我从中获取此代码的地方.我已经在web.config文件中设置了它.
<profile enabled="true" defaultProvider="AspNetSqlProfileProvider">
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
<properties>
<add name="FirstName" type="String"/>
<add name="LastName" type="String"/>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
我的问题是如何设置我要注册的用户的名字和姓氏?
我有一个MVC3站点,有一个管理站点和一个面向公众的站点.这些控制器,视图,模型等都在同一个MVC项目中.它们是分开的:管理站点位于名为Admin的MVC3区域中,面向公众的站点不属于某个区域,但存在于顶层.管理站点具有"登录"视图,公共站点也具有"登录"视图.在我的web.config文件中,我有:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogIn" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
现在,如果我访问公共站点中需要身份验证的任何页面,我会进入公共站点的登录页面,这很棒.但是,如果我访问管理区域中需要身份验证的任何页面,那么我将再次进入公共站点的登录页面.那么问题是如何确保如果我在管理区域中需要身份验证的页面上,我会被发送到管理员登录页面?
我有这个代码:
MembershipUser user = Membership.GetUser(model.UserName);
if (user != null)
user.IsApproved = false;
Run Code Online (Sandbox Code Playgroud)
对user.IsApproved
上面的调用确实将IsApproved
标志设置为false
但是当我随后执行时:
MembershipUser user = Membership.GetUser(model.UserName);
Run Code Online (Sandbox Code Playgroud)
并检查IsApproved
标志值是什么true
!
怎么了?
我有以下LINQ to Entities表达式:
var allItemsOver64 =
_inventoryContext.Items.Where(
i => DateTimeHelper.CalculateAgeInYears(i.PrimaryInsured.DoB, now) >= 65);
Run Code Online (Sandbox Code Playgroud)
问题是,当我使用allItemsOver64时,它表示不支持此表达式.我有一种感觉,因为调用了CalculateAgeInYears方法而发生了这个错误.为什么会发生这种情况,我该如何解决?
谢谢,
萨钦
编辑:
即使在更改代码以使用IEnumerables后,我仍然会得到相同的错误.这是我现在的代码:
DateTime now = DateTime.UtcNow;
var allItemsOver64 =
_inventoryContext.Items.Where(
i => DateTimeHelper.CalculateAgeInYears(i.PrimaryInsured.DoB, now) >= 65).AsEnumerable();
IEnumerable<Item> items65To69 = allItemsOver64.Where(
i =>
DateTimeHelper.CalculateAgeInYears(i.PrimaryInsured.DoB, now) >= 65 &&
DateTimeHelper.CalculateAgeInYears(i.PrimaryInsured.DoB, now) <= 69).AsEnumerable();
Run Code Online (Sandbox Code Playgroud) 我正在使用EF并且有一个上下文,我可以使用_inventoryContext.Items从中获取Item对象的集合.现在,这些item对象具有一个名为Carrier的字符串值.假设Items集合中有5个项目,它们具有以下Carrier值:
"A", "A", "B", "C", "C"
Run Code Online (Sandbox Code Playgroud)
如何使用_inventoryContext.Items获取唯一的载波值?
"A", "B", "C"
Run Code Online (Sandbox Code Playgroud)
注意
var carriers = _inventoryContext.Items.Select(i => i.Carrier).Distinct();
Run Code Online (Sandbox Code Playgroud)
不起作用; 我得到"不支持方法'Distinct'"没有内部异常.
我正在使用SQL Server 2008 Express.Items
是一个DataServiceQuery<Item>
,它的Carrier
属性是一个字符串.
我有一个期望字符串的函数,我想将const char*连接到要返回的字符串.
以下是帮助说明此方案的示例代码:
void TMain::SomeMethod(std::vector<std::string>* p)
{
p->push_back(TAnotherClass::Cchar1 + "/" + TAnotherClass::Cchar2);
}
Run Code Online (Sandbox Code Playgroud)
这是另一类来自:
class TAnotherClass
{
public:
static const char * Cchar1;
static const char * Cchar2;
};
const char * TAnotherClass::Cchar1 = "Home";
const char * TAnotherClass::Cchar2 = "user";
Run Code Online (Sandbox Code Playgroud)
我得到以下错误:类型'const char*'和'const char*'的无效操作数到二元运算符+
为什么这无效?请帮忙
我有这个结构
<nav>
<ul id="nav" class="sf-menu sf-navbar sf-js-enabled sf-shadow">
<li id="level1-home" class="current sfHover sf-breadcrumb">
<a href="/Admin/Home/Index">
...
Run Code Online (Sandbox Code Playgroud)
我想在<a>
不影响网站中任何其他链接的情况下设置标记样式.最好的方法是什么?
我正在使用MVC 3和razor,并且有一个表格,其中有一个下拉列表.当下拉列表中的值发生变化时,如何提交表单?我没有提交按钮.
@using (Html.BeginForm())
{
...
<div class="row">
<label>
Type of Card</label>
<div class="item">
@Html.DropDownList("PaymentFormModel.CardType", cardTypes, new { required = "required" })
</div>
</div>
...
}
Run Code Online (Sandbox Code Playgroud) 我有一个数据库,其中有很多字符串列.我应该使用NVARCHAR(MAX)还是将字符串限制为合理的最大值,例如NVARCHAR(100)等?我真正想知道的是,如果我将列设置为NVARCHAR(MAX)并且该列的所有值都是100个字符或更少,那么我可以通过将该列设置为NVARCHAR(100)来节省空间吗?
我知道spac不是这里唯一的问题,数据的"验证"也很重要,但我只是在询问空间问题.