Ich verwende Razor, um Javascript-Objekte zu rendern, wie im folgenden Codeschnipsel gezeigt
@{
bool isFirst = true;
foreach (var qa in Model.Form.FormItems)
{
if (isFirst)
{
isFirst = false;
}
else
{
@:,
}
@:new QuestionAndAnswer(
@:@(qa.QuestionAnswerId),
@:@(qa.OrderNumber),
@:@(qa.ParentOrderNumber),
@:@(qa.IsHeader.ToJsonValue()),
@:@(qa.IsMandatory.ToJsonValue()),
@:@(qa.IsAlertable.ToJsonValue()),
@:@(qa.IsAlarmable.ToJsonValue()),
@:@(qa.IsKeyItem.ToJsonValue()),
@:@(qa.IsHiddenQuestion.ToJsonValue()),
@:new Question(
@:@(qa.Question.QuestionId),
@:@Html.Raw(qa.Question.IdCode.ToJsonValue()),
@:new OverridableFormItemText(
@:@(qa.Question.ItemText.DefaultFormItemTextId),
@:@Html.Raw(qa.Question.ItemText.DefaultText.ToJsonValue()),
@:@Html.Raw(qa.Question.ItemText.DefaultHelpText.ToJsonValue()),
..etc...
Das macht meine cshtml-Seiten leicht lesbar und übersichtlich.
Leider werden alle Einzüge in den Browser übertragen, so dass die Seite etwa 4x so groß ist, wie sie sein müsste. Beispiel Schnipsel der html:
new QuestionAndAnswer(
34500,
2,
1,
false,
false,
false,
false,
false,
false,
new Question(
33955,
"123",
new OverridableFormItemText(
23879,
"Locality",
"",
null,
"",
""
)
),
new Answer(
22196,
"321",
4,
"MultipleChoiceSingleSelect",
Gibt es eine Möglichkeit, wie ich den schön formatierten serverseitigen Code beibehalten, aber eine unformatierte Version (d.h. ohne Einrückungen) an den Browser senden kann, um Bandbreite zu sparen?