2010-12-16 2 views
0
if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) == null) 
       { 
        Int32 LangID = -1; 
        string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode); 
        string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode); 
        string QuesID = com.Encrypt(ID.ToString(), com.KeyCode); 
        string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString()); 
        Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID); 
       } 
       else 
       { 

        Int32 LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()); 
        string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode); 
        string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode); 
        string QuesID = com.Encrypt(ID.ToString(), com.KeyCode); 
        string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString()); 
        Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID); 
       } 

[편집] 그 밖에도 IF else 블록에 중복 코드가 있습니다 ... 어떻게하면 더 짧게 만들 수 있습니까?IF else 블록에 코드가 중복됩니다 ... 어떻게하면 더 짧게 만들 수 있습니까?

답변

1

근무 시도를 사용하는 이유 ToString()?

if (e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] == null) 

그냥 기본 타입에주의하여야합니다

그래서 경우와
Int32 LangID = (Int32)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"]; 

짧은 :

int LangID = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] != null ? (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] : -1; 
string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode); 
string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode); 
string QuesID = com.Encrypt(ID.ToString(), com.KeyCode); 
string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString()); 
Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID); 

널 검사가 작동하지 않는 경우 값이 데이터에서 경우, !Convert.IsDBNull(), 시도 출처.

int LangID = !Convert.IsDBNull(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"]) ? (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] : -1; 
+0

ok 또한 변경 될 것입니다. 코드 단축에 도움이 될 수 있습니까? thnx – Serenity

+0

좋아, 나는 그것을 제거하려했다. 내가 아래에서 구현 한 방법이 효과가있다. – Serenity

0

확인 나는이 가깝지만가

if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) == String.Empty) 
3
Int32 LangID = -1; 
if (e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] != null) 
{ 
    LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()); 
} 
string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode); 
string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode); 
string QuesID = com.Encrypt(ID.ToString(), com.KeyCode); 
string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString()); 
Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID); 

여기에 내가 여기에 무슨 짓을했는지 :

  • 추출물에서 LANGID 1, 경우에하는 것이 -1의 기본 값으로 설정하고,의 LanguageID null가 아닌 경우에만 업데이트합니다.
  • if가 else 절이 더 이상 필요 없으므로 if 체크 후에 if/else 절에서 중복 된 공통 부분을 배치하십시오. 코드이 아래
1

당신을 -

bool isOk = String.IsNullOrEmpty(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());  
    Int32 LangID = isOk ? -1 : Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()); ; 
    string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode); 
    string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode); 
    string QuesID = com.Encrypt(ID.ToString(), com.KeyCode); 
    string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString()); 
    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID); 
+0

LangID 변수를 할당 할 때 긴 행을 반복하는 문제를 해결하지 않았습니다. – AUSteve

1

또한 반복 줄이기 위해 삼항 연산자를 사용할 수 있습니다

var tempLangId = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"]; 
Int32 LangID = tempLangId == null ? -1 : Convert.ToInt32(tempLangId); 
1

문자열 QuesTypeID = com.Encrypt (TypeID.ToString을() com.KeyCode); string LanguageID = com.Encrypt (LangID.ToString(), com.KeyCode); 문자열 QuesID = com.Encrypt (ID.ToString(), com.KeyCode); 문자열 PID = com.Encrypt (radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());

Int32 LangId = -1; 

    if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) != null) 
    { 
       Int32 LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()); 
    } 


    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID); 
관련 문제