Что относительно IncrediBuild? Это - хорошая распределенная система сборки с интеграцией Visual Studio.
Вот код из источника MVC для текстового поля:
string attemptedValue = (string)htmlHelper.GetModelStateValue(name, typeof(string));
tagBuilder.MergeAttribute("value", attemptedValue ?? ((useViewData) ? htmlHelper.EvalString(name) : valueParameter**), isExplicitValue);
break;
И код для GetModelStateValue ( )
internal object GetModelStateValue(string key, Type destinationType) {
ModelState modelState;
if (ViewData.ModelState.TryGetValue(key, out modelState)) {
if (modelState.Value != null) {
return modelState.Value.ConvertTo(destinationType, null /* culture */);
}
}
return null;
}
Итак, что происходит: Html "Helper" ищет значение текстового поля, сопоставляя имя в вашем ViewData.ModalState, если оно находится в словаре ModelState, он полностью игнорирует значение, которое вы при условии.
Итак, все, что if (value> 0) {ValueA = 0; } не имеет значения, потому что он будет использовать опубликованные значения в ModelState, если имена совпадают.
Способ, которым я ' Мы исправили это, чтобы убрать ModalState до того, как представление отобразит определенные значения, с которыми я хочу возиться в своих моделях представления. Вот код, который я использовал:
public static void SanitizeWildcards( Controller controller, params string[] filterStrings )
{
foreach( var filterString in filterStrings )
{
var modelState = controller.ModelState;
ModelState modelStateValue;
if( modelState.TryGetValue(filterString,out
controller.ModelState.SetModelValue(filterString, new ValueProviderResult("","", null));
}
}
спасибо, jfar .. это код vb:
Sub CleanForm(ByVal ParamArray Fields() As String)
Dim modelStateValue As ModelState = Nothing
For Each Field In Fields
If ModelState.TryGetValue(Field, modelStateValue) Then
ModelState.SetModelValue(Field, New ValueProviderResult(Nothing, Nothing, Nothing))
End If
Next
End Sub