2015-01-09 22 views
0

我正在嘗試此代碼,但在運行時出現錯誤。我想如果IsUPS具有真正的價值,那麼一個新的表格行&表格數據將被添加到表中,如果IsUPS是假的,那麼表格將有一個表格行和數據?如何用剃刀模板實現這一目標?請指導。感謝如何工作條件剃刀模板c#

string template = "<table><tr><td>This is my sample template, 
    Hello @Model.Name!</td></tr> @if (@Model.IsUPS) {<tr><td> it is ups</td></tr> } 
    </table>"; 

    string result = Razor.Parse(template, new { Name = "World", IsUPS = true }); 

回答

0

首先:我認爲,一個錯誤產生以下語句:

@if (@Model.IsUPS) 

它應該是:

@if (Model.IsUPS) 

第一@後,你應該把服務器端代碼,所以當寫入條件時不需要另一個@

其次:是模板粘貼在單行嗎?如果沒有,你需要使用逐字字符串:

string template = @"<table><tr><td>This is my sample template, 
        Hello @Model.Name!</td></tr> @if (Model.IsUPS) {<tr><td> it is ups</td></tr> } 
        </table>"; 

三:告訴我們你得到一個錯誤。你使用RazorEngine庫嗎?

第四:在我修復代碼應該工作後,檢查自己。

1

假設您的「字符串結果=」行工作正常;

我會在這裏做很多不同的事情。

與您使用「@」相關的錯誤消息(您應該真的已經分享了錯誤)。

試試這個:

@{ 
string template = @"<table><tr><td>This is my sample template, Hello" + this.Model.Name + @"!</td></tr>"; 

if (true) 
{ 
    template += @"<tr><td> it is ups</td></tr>"; 
} 

template += @"</table>"; 
} 

的 「@ {}」 塊封裝的HTML剃刀塊,使用@用於剃刀的變化。請注意我已經使字符串使用@「」而不是「」,所以如果你想在行之間分割html,你不需要字符串連接。