Текущий код
Я создал метод расширения для HtmlHelper
, который определяется следующим образом:
public static IHtmlString MyMethod(this HtmlHelper helper, Action<MyClass> action)
{
MyClass settings = new MyClass();
action(settings);
// Here I can now use the settings as defined in razor view.
}
Цель создания метода расширения таким образом, чтобы я мог вызвать его, разрешив определить класс MyClass
в виде бритвы следующим образом:
<div>
@Html.MyMethod(settings =>
{
settings.SomeFunction(1, 2, 3);
})
</div>
Проблема
Теперь это прекрасно работает и делает именно то, что я ожидаю. Однако проблема 1 заключается в том, что каждый раз, когда я выполняю «Формат документа» (Ctrl + E, D) в Visual Studio, все строки после первой строки получают отступ в другую вкладку. Просто чтобы прояснить, после форматирования документа 4 раза это будет выглядеть примерно так:
<div>
@Html.MyMethod(settings =>
{
settings.SomeFunction(1, 2, 3);
})
</div>
Кажется, что проблема возникает только при использовании внутри элемента (в этом примере div
). Но это то, что мне нужно было бы использовать.
Ввиду того, что я часто изменяю, это не займет много времени, пока я автоматически отформатирую их за пределами видимого пространства экрана. Затем мне нужно вручную переместить их обратно. Излишне говорить, что это очень раздражает, особенно при многократном использовании в одном представлении.
В настоящее время я использую Visual Studio 2017, я не уверен, существует ли эта проблема в предыдущих версиях или нет.
Что я пробовал
Я пробовал разные способы написания кода, пытаясь остановить его, но он всегда форматирует к одной и той же проблеме. Так, например, я переместил settings
на вторую строку, переместил отверстие {
на первую строку. Ничто не похоже на работу. Пара примеров:
@Html.MyMethod(
settings =>
{
settings.SomeFunction(1, 2, 3);
})
@Html.MyMethod(settings => {
settings.SomeFunction(1, 2, 3);
})
Вопрос
Почему это происходит, и что я могу сделать, чтобы остановить это? Я открыт для переопределения метода расширения, если в этом проблема, при условии, что я могу вызывать его так же, как я показал выше.
Просто замечание, для любого, кто использовал библиотеку DevExpress MVC, которая допускает аналогичную функциональность, но почему-то не страдает от этой конкретной проблемы. Хотя я не знаю, что они сделали по-другому, я просто знаю, что эта функциональность должна быть достижимой, не вызывая проблемы с форматированием.