2010-04-12 3 views
0

에 전달 된 매개 변수 내가 필요하지 않은 몇 가지 텍스트 상자를을 방해. 사용자가 MVC 2에서는 '널 (null)'로 전달됩니다 아무것도 입력하지 않으면 그것은으로 통과되었다 ' ""'MVC 1에 어떤 변경이를 위해 수용 할 수 있는가?MVC 2 변환 내 저장 프로 시저

public string Name { get; set; } 
    public string Offer{ get; set; } 
    public string AutoID { get; set; } 


     using (SqlConnection connect = new SqlConnection(connections)) 
     { 
      SqlCommand command = new SqlCommand("Info_Add", connect); 
      command.Parameters.Add("autoID", SqlDbType.BigInt).Direction = ParameterDirection.Output;     
      command.Parameters.Add(new SqlParameter("name", Name)); 

      //Offer now returns a null value, which cannot be passed 
      command.Parameters.Add(new SqlParameter("offer", Offer)); 
      command.CommandType = CommandType.StoredProcedure; 

      connect.Open(); 
      command.ExecuteNonQuery(); 
      AutoID = command.Parameters["autoID"].Value.ToString(); 
     } 
+0

, 덕분에 투표 댓글을 때 아래로 남겨주세요. 미안 해요 u는 무슨 뜻인지 이해하지 못했다 : –

답변

1

확인 string.IsNullOrEmpty()와 경우 속성 진정한 다음 몇 가지 기본 값을 설정합니다.

는 2

+0

MVC 1 " – jfar

+1

이 @jfar"항상이었다. 대답이 뭐가 잘못 됐어? –

12

변경 모델 바인더 ASP.NET MVC 1과 ASP.NET MVC 모두 작동이 방법 : Global.asax에있는

public class EmptyStringModelBinder : DefaultModelBinder 
{ 
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
     bindingContext.ModelMetadata.ConvertEmptyStringToNull = false; 
     return base.BindModel(controllerContext, bindingContext); 
    } 
} 

다음 :

ModelBinders.Binders.DefaultBinder = new EmptyStringModelBaseBinder(); 

이 1 bindingContext.ModelMetadata.ConvertEmptyStringToNull 속성이 null로 전환 할 책임이 MVC에서 기본 설정으로 돌아갑니다.

+0

+1 한 곳에서 이렇게 쉽게 할 수 있다는 것을 몰랐습니다! –

0

ModelBinder를 동작을 재정의하는 또 다른 방법은 ConvertEmptyStringToNull 마법이 일어나는 곳이다는 GetPropertyValue을 무시하는 것입니다

namespace System.Web.Mvc 
{ 
    class KeepEmptyStringsEmptyModelBinder : DefaultModelBinder 
    { 
     protected override object GetPropertyValue(ControllerContext controllerContext, ModelBindingContext bindingContext, ComponentModel.PropertyDescriptor propertyDescriptor, IModelBinder propertyBinder) 
     { 
      return propertyBinder.BindModel(controllerContext, bindingContext); 
     } 
    } 
} 

브라이언