как применить свойство только для чтения на основе условия [duplicate]

В ветке вы хотели бы объединить коммиты, запустить:

git rebase -i HEAD~(n number of commits back to review)

. Это откроет текстовый редактор, и вы должны переключить 'pick' перед каждой фиксацией на 'squash' если вы хотите, чтобы эти коммиты были объединены вместе. Например, если вы хотите объединить все коммиты в единицу, «выбрать» - это первая фиксация, которую вы сделали, и все будущие должны быть настроены на «squash». Если вы используете vim, используйте: x в режиме вставки, чтобы сохранить и выйти из редактора.

Затем, чтобы завершить rebase:

git rebase --continue

Подробнее об этом и других способах переписать история фиксации см. этот полезный пост

27
задан SteveC 22 February 2012 в 16:16
поделиться

8 ответов

Жесткая проблема ... Однако, если вы хотите определить только атрибут 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" }
35
ответ дан Panos 27 August 2018 в 00:14
поделиться

Если вы хотите определить несколько атрибутов и условно читать только без дублирования других атрибутов, вы можете использовать словарь вместо анонимных типов для атрибутов.

, например

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)  
25
ответ дан Aviko 27 August 2018 в 00:14
поделиться

Я использую это:

   @Html.TextAreaFor(model => model.ComentarioGestor, comentarioGestor? new { @class = "form-control" } : new { @class = "form-control", @readonly = "readonly" } as object)
0
ответ дан cristian gonzalez 27 August 2018 в 00:14
поделиться

Я попробовал большинство предложений выше, и теперь я пришел к самому простому с одной строкой. Комбинировать 2 анонимных объекта атрибутов html, объявив, что один из них увядает как «объект».

@Html.TextBoxFor(m => m.Email, !isEdit ? new { id = "email_box" } : new { id = "email_box", @readonly = isEdit ? "readonly" : "false" } as object)
-2
ответ дан cronixis 27 August 2018 в 00:14
поделиться

И альтернатива - просто испустить его как простой старый HTML. Да, редактор заставит вас думать, что вы ошибаетесь, но это часто случается с VS2008SP1. Этот пример специально предназначен для флажков, которые, как представляется, полностью теряются в CTP5, но он дает вам представление о том, как испускать условные атрибуты.

<input type="checkbox" name="roles" value='<%# Eval("Name") %>' 
  <%# ((bool) Eval("InRole")) ? "checked" : "" %> 
  <%# ViewData.Model.IsInRole("Admin") ? "" : "disabled" %> />
4
ответ дан leppie 27 August 2018 в 00:14
поделиться

Я думаю, что это должно быть

<%= ((bool) Eval("InRole")) ? "checked" : "" %> 

, а не в ответ на leppies.

<%# ((bool) Eval("InRole")) ? "checked" : "" %> 

По крайней мере, это не сработало для меня с #, но сработало с =. Я сделал что-то неправильно? Спасибо за отзыв в любом случае:)

1
ответ дан Olaj 27 August 2018 в 00:14
поделиться

Совет. Это простое наличие атрибута readonly / disabled, который делает элемент readonly или отключен в браузере.

@Html.TextBoxFor(x => x.Name, isReadonly ?(object) new { @readonly = true } : new { /*Some other attributes*/ })
3
ответ дан pranavn 27 August 2018 в 00:14
поделиться
$ (function () {$ ("[readonly = 'false']"). removeAttr ("readonly");});
0
ответ дан silversumo 27 August 2018 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: