2012-11-15 52 views
0
<div class="firstColumn"> 
<% for (int rowCount = 0; rowCount < Model.TaskAttributes.Count; rowCount += 2) 
    {%> 
     <%= Html.EditorFor(model => model.TaskAttributes[rowCount]) %> 
<%} 
%> 
</div> 

所以,我有這樣的代碼工作正常,但我不滿意所有的MVC標記。我可以從我的ASP .NET MVC視圖中刪除WebForms腳本標記嗎?

該解決方案還不支持Razor語法,所以我堅持使用這種語法,但我想知道它是否可以清理乾淨。

我想應該工作是這樣的:

<div class="firstColumn"> 
<% for (int rowCount = 0; rowCount < Model.TaskAttributes.Count; rowCount += 2) 
    { 
     Html.EditorFor(model => model.TaskAttributes[rowCount]); 
    } 
%> 
</div> 

這並不提供任何EditorFor的到我的網頁,但。看起來,'編輯'之前'<%='是嚴酷的。有沒有什麼方法可以表達這一點,而不必關閉和打開標籤?

+0

即使該代碼有效,它也不是一個好代碼。你認爲它不應該這樣做。 – DarthVader

+2

我知道這一點。我繼承了技術債務,沒有時間重新編寫和宣傳各處的變化,但如果可能進行小規模的清理工作,那麼我會採取這種做法。 –

+1

你可以試試'@ Html.EditorFor(model => model.TaskAttributes [rowCount]);'。 – kerzek

回答

0

<%=是快捷方式的Response.Write()。你嘗試過嗎?

0
<div class="firstColumn"> 
    @for (int rowCount = 0; rowCount < Model.TaskAttributes.Count; rowCount += 2) 
    { 
     @Html.EditorFor(model => model.TaskAttributes[rowCount]) 
    } 
</div> 
+0

這是一個有效的MVC3轉換,但OP已經提到Razor語法不適用於他。他只是試圖重構一些看似無關的腳本標記。 – Yuck

1

如此,因爲它會得到真的一樣好。你需要有:

<%= Html.EditorFor(model => model.TaskAttributes[rowCount]) %> 

...使得輸出被髮射到響應流。即使MVC3語法,你會寫:

@for (int rowCount = 0; rowCount < Model.TaskAttributes.Count; rowCount += 2) { 
    @Html.EditorFor(model => model.TaskAttributes[rowCount]) 
} 

並不僅僅是:

@for (int rowCount = 0; rowCount < Model.TaskAttributes.Count; rowCount += 2) { 
    Html.EditorFor(model => model.TaskAttributes[rowCount]) 
} 
相關問題