Я предполагаю, что вам нужно имя метода вызывающего абонента, а затем сравнить его. Насколько я понимаю, это то, что вам нужно.
String callerMethodName = Thread.currentThread().getStackTrace()[2].getMethodName();
Обратите внимание, что вам может понадобиться заменить 2 на 1.
Другим способом может быть отправка имени метода в качестве параметра в вашем втором методе, например: -
public double method2(String callerMethodName){
}
Один подход я видел этот сценарий, должен использовать фильтр действия для заполнения данных для частичного представления - т.е. подкласс ActionFilterAttribute
. В OnActionExecuting
, добавьте данные в ViewData. Затем просто необходимо украсить различные действия, которые используют то частичное представление с фильтром.
Вместо того, чтобы добавить вещи как MailingListSignup
как свойство Вашего ProductModel
, инкапсулируйте обоих на том же уровне в классе как ProductViewModel
это похоже:
public class ProductViewModel() {
public ProductModel productModel;
public MailingListSignup signup;
}
Затем заставьте свое Представление быть со строгим контролем типов к ProductViewModel
класс. Можно получить доступ ProductModel
путем вызова Model.productModel
, и можно получить доступ к использованию класса регистрации Model.signup
.
Это - свободная интерпретация 'Модели Презентации Fowler' (http://martinfowler.com/eaaDev/PresentationModel.html), но я видел используемый некоторой Microsoft devs, такой как Rob Conery и Stephen Walther.
Существует перегрузка RenderPartial, которую я использую, которые позволяют нам, Вы указываете новый ViewData и Модель:
Если Вы смотрите на предыдущую ссылку исходного кода MVC, а также следующее (ищите метод RenderPartialInternal):
Вы видите, если в основном копирует видеоданные, передачу создания нового Словаря, и устанавливает Модель, которая будет использоваться в управлении. Таким образом, страница может иметь Модель, но затем передать другую Модель подуправлению.
Если подсредства управления не отнесены непосредственно из основной Модели Представления, Вы могли бы добиться цели упоминания Marc Gravell для добавления пользовательской логики.
Один из методов, которые я пробовал было использовать строго типизированное частичное представление с интерфейсом. В большинстве ситуаций агрегированная модель представления - лучший способ, но я все же хочу поделиться этим.
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IMailingListSignup>" %>
Модель представления реализует интерфейс
public class ProductViewModel:IMailingListSignup
Это совсем не идеально, но решает некоторые проблемы: вы все равно можете легко сопоставить свойства с вашего маршрута до модель. Я не уверен, что в противном случае у вас может быть карта параметров маршрута для свойств MailingListSignup.
У вас все еще есть проблема с заполнением Модели. Если еще не поздно, я предпочитаю делать это в OnActionExecuted. Я не понимаю, как можно заполнить модель в OnActionExecuting.