2012-06-05 2 views
0

여기에 코드를 입력하십시오. 다른 몇 가지 게시물을 읽었지만 사용 가능한 답변이 없습니다.MVC3 프로필 설정 속성을 찾을 수 없음

내 프로필 정보가 있는데, 선택한 사용자의 데이터를 올바르게 가져 오지만 일단 시도하고 저장하면 다음 오류가 발생합니다.

'FirstName'설정 속성을 찾을 수 없습니다.

POST에 대한 것이므로, 아직 아무것도하지 않고 있습니다. 나는 그것의로드하려고 생각, 또는 한 번 게시 된 모델을 채우기 위해 프로필 개체를 얻을. 이 현상이 일어나고있는 곳에서 찾을 수있는 것으로부터 콜 스택의 내용은 없습니다.

의 Web.config :

<profile inherits="MyWeb.BusinessLayer.Models.Account.Profile" enabled="true" defaultProvider="AspNetSqlProfileProvider"> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="My Website"/> 
    </providers> 
</profile> 

프로필 클래스

public class Profile : ProfileBase 
{ 
    [Display(Name = "First Name")] 
    [Required(ErrorMessageResourceName = "err_req_field", ErrorMessageResourceType = typeof(Resources))] 
    [StringLength(50, MinimumLength = 3, ErrorMessageResourceName = "err_len_field", ErrorMessageResourceType = typeof(Resources))] 
    public virtual string FirstName 
    { 
     get 
     { 
      return (this.GetPropertyValue("FirstName").ToString()); 
     } 
     set 
     { 
      this.SetPropertyValue("FirstName", value); 
     } 
    } ... abreviated 

컨트롤러 작업

public ViewResult EditProfile(Guid id) 
    { 
     var user = _userService.Get(id); 

     Profile _profile = Profile.GetProfile(user.UserName); 

     return View(_profile); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public RedirectToRouteResult EditProfile(Profile profile) 
    { 
     return RedirectToAction("Index" , "UserAdministration"); 
    } 

디스플레이 편집기가 잘 작동, 나는 데이터를 얻을, 그것은 내가 시도 바로 그 때 포스트, 내가 얻는다. 다른 아이디어? 필자의 다른 생각은 Ajax Post를하는 것일 수도 있습니다. paramerts가 Profile 모델보다는 분리되어 읽히고 설정됩니다./생각 ...?

답변

1

프로필 클래스를 사용하여 양식을 게시하면 모델 바인더가 모델을 바인딩하여 모든 속성 ('FirstName')을 필요로합니다.

문제는 양식의 모델이 완전하지 않아서 프로필이 승인되지 않았고 알 수없는 것으로 작동한다는 것입니다.

FirstName 속성에 대한 getter 앞에 중단 점을 설정할 때이를 볼 수 있습니다. 중단 점이 발생한 후에는 지역 창을보고 'this'를 찾습니다. 'base'속성을 확장하면 IsAnonymous 속성이 true로 설정됩니다.

바인더는 POST 양식에서 나온 프로파일을 인식 할 수 없습니다. 이 솔루션은 이런 식으로 코딩하는 것입니다

[AcceptVerbs(HttpVerbs.Post)] 
public RedirectToRouteResult EditProfile(ProfileModel profileModel) 
{ 
    // get the current user profile 
    Profile profile = Profile.GetUserProfile(); 
    profile.FirstName = profileModel.FirstName; 

    // save the profile 
    profile.save(); 

    return RedirectToAction("Index" , "UserAdministration"); 
} 

그래서 당신은 현재 기록 된 사용자를 기반으로 사용자 프로필을 생성 한 후 일부 속성을 업데이트합니다.

관련 문제