为了账号安全,请及时绑定邮箱和手机立即绑定

在ASP.NET MVC中实现配置文件提供程序

在ASP.NET MVC中实现配置文件提供程序

拉丁的传说 2019-10-15 15:47:13
为了我的一生,我无法让SqlProfileProvider在我正在处理的MVC项目中工作。我意识到的第一个有趣的事情是Visual Studio不会自动为您生成ProfileCommon代理类。没什么大不了的,因为扩展ProfileBase类很简单。创建ProfileCommon类之后,我编写了以下Action方法来创建用户个人资料。[AcceptVerbs("POST")]public ActionResult CreateProfile(string company, string phone, string fax, string city, string state, string zip){    MembershipUser user = Membership.GetUser();    ProfileCommon profile = ProfileCommon.Create(user.UserName, user.IsApproved) as ProfileCommon;    profile.Company = company;    profile.Phone = phone;    profile.Fax = fax;    profile.City = city;    profile.State = state;    profile.Zip = zip;    profile.Save();    return RedirectToAction("Index", "Account"); }我遇到的问题是对ProfileCommon.Create()的调用无法转换为ProfileCommon类型,因此我无法取回我的配置文件对象,这显然会导致下一行失败,因为profile为null。以下是我的web.config的摘要:<profile defaultProvider="AspNetSqlProfileProvider" automaticSaveEnabled="false" enabled="true">    <providers>        <clear/>        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" applicationName="/" />    </providers>    <properties>        <add name="FirstName" type="string" />        <add name="LastName" type="string" />        <add name="Company" type="string" />        <add name="Phone" type="string" />        <add name="Fax" type="string" />        <add name="City" type="string" />        <add name="State" type="string" />        <add name="Zip" type="string" />        <add name="Email" type="string" >    </properties></profile>MembershipProvider工作顺利,所以我知道连接字符串很好
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

尝试使用Web Profile Builder。它是一个构建脚本,可以从web.config自动生成一个WebProfile类(等效于ProfileCommon)。


查看完整回答
反对 回复 2019-10-15
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

不确定整个问题,但是我在您的代码中注意到了一件事:


ProfileCommon profile = (ProfileCommon)ProfileCommon.Create(user.UserName, user.IsApproved) as ProfileCommon;

您不需要(ProfileCommon)和as ProfileCommon。它们都执行强制类型转换,但是()引发异常,而as如果无法进行强制类型转换,则返回null。


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 494 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信