2017-03-17 63 views
0

我正在製作一個項目,在那裏我必須將房間相互比較,並在房間發生變化時進行打印。收集變量並縮短代碼

我讓這段代碼有工作正常。但代碼非常難看,我想優化代碼。有沒有一種方法可以將變量收集在一起,所以我沒有14行變量?也許我以後需要使用這些變量,所以我不想內聯這些變量。

<th class="callout-inner secondary no-changes-reservation-bgcolor"> 
    <h5>Reservationsnummer:</h5> 

     @{ 
      var orderfirstName = Model.Order.FirstName.ToString(); 
      var order2firstName = Model.Order2.FirstName.ToString(); 
      var orderlastName = Model.Order.LastName.ToString(); 
      var order2lastName = Model.Order2.LastName.ToString(); 
      var orderaddress = Model.Order.Address.ToString(); 
      var order2address = Model.Order2.Address.ToString(); 
      var orderpostCode = Model.Order.PostCode.ToString(); 
      var order2postCode = Model.Order2.PostCode.ToString(); 
      var orderCity = Model.Order.City.ToString(); 
      var order2City = Model.Order2.City.ToString(); 
      var orderPhone = Model.Order.Phone.ToString(); 
      var order2Phone = Model.Order2.Phone.ToString(); 
      var orderEmail = Model.Order.Email.ToString(); 
      var order2Email = Model.Order2.Email.ToString(); 
     } 
     <table align="center" class="wrapper header float-center"> 
      <tr> 
       <td class="wrapper-inner background-color__yellow"> 
        <span> 
         @renderOrderPropertyBlock("Fornavn", orderfirstName, order2firstName) 
         <br /> 
         @renderOrderPropertyBlock("Efternavn", orderlastName, order2lastName) 
         <br /> 
         @renderOrderPropertyBlock("Adresse", orderaddress, order2address) 
         <br /> 
         @renderOrderPropertyBlock("Postnummer", orderpostCode, order2postCode) 
         <br /> 
         @renderOrderPropertyBlock("City", orderCity, order2City) 
         <br /> 
         @renderOrderPropertyBlock("Phone", orderPhone, order2Phone) 
         <br /> 
         @renderOrderPropertyBlock("Email", orderEmail, order2Email) 
        </span> 
       </td> 
      </tr> 
     </table> 
    </th> 
+0

什麼跟所有的'ToString'電話是?這些屬性是不是已經改變了? – juharr

+0

這個問題可能適用於[Code Review](http://codereview.stackexchange.com/help),只要(a)您的代碼按預期工作,(b)您的代碼是真實代碼,而不是示例代碼,和(c)你的代碼包含在問題的主體中。如果您希望通過同行評審來改進代碼的各個方面,請將其發佈在代碼評審中。 –

回答

1

你不必定義這些變量,簡單的通過屬性值到你的HTML幫助:

@renderOrderPropertyBlock("Fornavn", Model.Order.FirstName.ToString(), Model.Order2.FirstName.ToString()) 

您也可以通過與反射特性的迭代,但代碼將執行慢得多。

+0

有趣的是,這被接受爲答案,因爲OP聲明「我不想內聯變量」...... –

+0

對不起。無論如何,我可以看到我可以內聯變量。 – M375

1

你可以這樣做:

@{ 
    var order1 = Model.Order; 
    var order2 = Model.Order2; 
} 

而在你的跨度:

<span> 
     @renderOrderPropertyBlock("Fornavn", order1.FirstName.ToString(), order2.FirstName.ToString()) 
     <br /> 

// and so on ... 

</span>