2017-03-17 64 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>