В ветке вы хотели бы объединить коммиты, запустить:
git rebase -i HEAD~(n number of commits back to review)
. Это откроет текстовый редактор, и вы должны переключить 'pick' перед каждой фиксацией на 'squash' если вы хотите, чтобы эти коммиты были объединены вместе. Например, если вы хотите объединить все коммиты в единицу, «выбрать» - это первая фиксация, которую вы сделали, и все будущие должны быть настроены на «squash». Если вы используете vim, используйте: x в режиме вставки, чтобы сохранить и выйти из редактора.
Затем, чтобы завершить rebase:
git rebase --continue
Подробнее об этом и других способах переписать история фиксации см. этот полезный пост
Жесткая проблема ... Однако, если вы хотите определить только атрибут readonly
, вы можете сделать это следующим образом:
<%= Html.TextBox("Client.ClientId", ViewData.Model.ClientId,
ViewData.Model.ClientId != null && ViewData.Model.ClientId.Length > 0
? new { @readonly = "readonly" }
: null)
%>
Если вы хотите определить больше атрибутов, тогда вы должны определить два анонимных типа и имеют несколько копий атрибутов. Например, что-то вроде этого (чего мне все равно не нравится):
ClientId.Length > 0
? (object)new { @readonly = "readonly", @class = "myCSS" }
: (object)new { @class = "myCSS" }
Если вы хотите определить несколько атрибутов и условно читать только без дублирования других атрибутов, вы можете использовать словарь вместо анонимных типов для атрибутов.
, например
Dictionary<string, object> htmlAttributes = new Dictionary<string, object>();
htmlAttributes.Add("class", "myCSS");
htmlAttributes.Add("data-attr1", "val1");
htmlAttributes.Add("data-attr2", "val2");
if (Model.LoggedInData.IsAdmin == false)
{
htmlAttributes.Add("readonly", "readonly");
}
@:User: @Html.TextBoxFor(
m => m.User,
htmlAttributes)
Я использую это:
@Html.TextAreaFor(model => model.ComentarioGestor, comentarioGestor? new { @class = "form-control" } : new { @class = "form-control", @readonly = "readonly" } as object)
Я попробовал большинство предложений выше, и теперь я пришел к самому простому с одной строкой. Комбинировать 2 анонимных объекта атрибутов html, объявив, что один из них увядает как «объект».
@Html.TextBoxFor(m => m.Email, !isEdit ? new { id = "email_box" } : new { id = "email_box", @readonly = isEdit ? "readonly" : "false" } as object)
И альтернатива - просто испустить его как простой старый HTML. Да, редактор заставит вас думать, что вы ошибаетесь, но это часто случается с VS2008SP1. Этот пример специально предназначен для флажков, которые, как представляется, полностью теряются в CTP5, но он дает вам представление о том, как испускать условные атрибуты.
<input type="checkbox" name="roles" value='<%# Eval("Name") %>'
<%# ((bool) Eval("InRole")) ? "checked" : "" %>
<%# ViewData.Model.IsInRole("Admin") ? "" : "disabled" %> />
Я думаю, что это должно быть
<%= ((bool) Eval("InRole")) ? "checked" : "" %>
, а не в ответ на leppies.
<%# ((bool) Eval("InRole")) ? "checked" : "" %>
По крайней мере, это не сработало для меня с #, но сработало с =. Я сделал что-то неправильно? Спасибо за отзыв в любом случае:)
Совет. Это простое наличие атрибута readonly / disabled, который делает элемент readonly или отключен в браузере.
@Html.TextBoxFor(x => x.Name, isReadonly ?(object) new { @readonly = true } : new { /*Some other attributes*/ })